Str_replace avec une variable ne marche pas

Bonjour,
Je crois que mon code expliqe a peu près tout, donc, le voici:
if(isset($_POST['ancien_message']))
{
  $ancien_message = addslashes($_POST['ancien_message']); //on récupère l'ancien message dans $ancien_message
  $modif = array("é","à ","Ã'","â","î","è","ê"); //valeurs à rechercher
  $amodif = array("é","à","ô","â","î","è","ê"); //valeurs de remplacement aux valeurs à rechercher

//la variable $nouveau_message contient la chaine ou les remplacement ont été éfféctués.
  $nouveau_message = str_replace($modif,$amodif,$ancien_message);

  echo'<p><p>Voici le texte transformé, sans erreur d\'encodage... :) :</p> <textarea cols="120" rows="30">'.stripslashes($nouveau_message).'</textarea></p>';
//et on affiche le résultat désécurisé dans un textarea

}else{ //sinon, on affiche le forumulaire pour envoyer le texte à transformer
?>
<p>
<p>Entre ici le texte à transformer, afin de supprimer les erreurs d'encodage</p>
	<form action="transforme.php" method="post">
<textarea name="ancien_message" cols="120" rows="30"></textarea>
<input type="submit" value="transformer" />
	</form>
</p>
<?php
} //fin du else
?>


Là, ca ne transforme rien du tout, ca renvoi le résultat tel quel. Par contre, si je remplace cette ligne:
$nouveau_message = str_replace($modif,$amodif,$ancien_message);

Par cette ligne:
$nouveau_message = str_replace($modif,$amodif,"voici un caractère à transformer: é");

Il m'affichera
voici un caract?re ? transformer: é

C'est à dire: il effectue bien les transformations, mais mets des ? à la place des vrai caractères. :(
Aucune message d'erreur.

Mon problème est donc celui là: si la chaine dans laquelle on effectue des remplacements est contenu dans une variable, ca ne marche pas. :(
Pourquoi?



--
☼◄►►►↑↑■■■■==##-->···→{([/ Pols12 \])}←···<--##==■■■■↓↓◄◄◄►☼

6 réponses

  1. Bonjour
    Merci, ellesont l'air de marcher, presque:
    Elle affiche:
    le ê => ? =e accent circonflexe
    é => ? = e accent aigu
    è => ? = e accent grave
    ç => ? = c cédille
    ? => ? = a accent grave /!\ espace apr?s le ?!

    Je asis aps comment je vais faire pour le a accent grave. Une idée?
    Pour les accent d'origine, je pense que je vais utilsier un str_replace. ;)
    0
    1. Ca ne marche pas:
      Si je mets ce code:
      $modif = array("é","à","ô","â","î","è","ê");
      $amodif = array("é","à","ô","â","î","è","ê");
      
      $nouveau_message = utf8_decode(str_replace($modif,$amodif,$ancien_message));
      

      ê devient ê =e accent circonflexe
      é devient é = e accent aigu
      è devient è = e accent grave
      ç devient ç = c cédille
      Jusque là ca va, mais:
      Ã devient ? au lieu de à
      é devient ?
      è devient ?
      î devient ?
      etc
      Donc, tous els bons accents d'origine deviennent des ? (plus exactement des carrés qui sont égal au caractère inconnu)

      Une idée?
      Merci
      Pols12
      0
      1. Tu l'encode en quoi ton texte ?
        0
        1. Salut
          Sur un forum (dont je e suis pas le web), la balise meta content indique UTF8.
          Mais il y a eu un bug, une mauvaise manip du web, et tous els accents des messages se sont transformés en à quelque chose. Le bug est réglé: tous les nouveaux accents sont corrects.
          Mais les anciens reste à et il faut donc édietr chaque message pour les corriger.
          J'ai eu l'idée de créer un script, car un cimple copier-coller serait très simple.
          Voilà!
          0