Hola Joaquín.
Te estás liando mucho :S. es más facíl de lo que crees. Y sí hay que usar str_replace(). Lo que debemos hacer sería de la siguiente manera :
<?
$texto = $_POST['mensaje'];
$texto = str_replace("[saludo]","<b>Holaaa</b> <i>¿Como estais?</i>",$texto);
?>
Espero que te haya quedado claro y que te funcione mucha suerte