Salut,
pour le remplacement des lettres, voici la solution. Tu n'a plus qu'à adapter pour les virgules et les pre.
$texte = "c'est <i>toto</i> le héros et <i>tata</i> la belle "; echo "$texte<br>"; // -> c'est <i>toto</i> le héros et <i>tata</i> la belle if(preg_match_all("|<i>([^<]*)</i>|",$texte,$out,PREG_SET_ORDER )) { if(is_array($out)) { foreach($out as $tab_ch) { $tag=$tab_ch[0]; // -> <i>toto</i> $mot=$tab_ch[1]; // -> toto $mot_remplace=str_replace(array("o","a"),"i",$mot); // -> titi $tag_remplace=str_replace($mot,$mot_remplace,$tag); // -> <i>titi</i> $texte=str_replace($tag,$tag_remplace,$texte); } } } echo "$texte<br>" // c'est titi le héros et titi la belle