Aide sur str_replace();

Résolu
Bonjour à tous !

Je galère fort sur la fonction str_replace(); et sollicite votre aide !

J'ai 3 zone de texte a gérer :
- ma table est en general_ci
- mes feuilles sont déclarée utf-8
- voici mon code :
$db = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) or die('Erreur de connexion '.mysql_error());
mysql_select_db(MYSQL_BASE,$db) or die('Erreur de selection '.mysql_error());
mysql_query("SET NAMES 'utf8'");

$Description = str_replace(chr(146), "’", $Description);
$Description = str_replace(chr(156), "oe", $Description);
$Conseils = str_replace(chr(146), "’", $Conseils);
$Conseils = str_replace(chr(156), "oe", $Conseils);
$Resultat = str_replace(chr(146), "’", $Resultat);
$Resultat = str_replace(chr(156), "oe", $Resultat);

$sqlfr = "UPDATE tb_produits SET Description ='$Description', Conseils ='$Conseils', Resultat ='$Resultat' WHERE NumId='$NumId'";

mysql_query($sqlfr) or die('Erreur SQL !'.$sqlfr.'<br>'.mysql_error()); ?>

Je "sais" que ce n'est pas correcte, mais demande votre aide pour remplacer des caractères non affichés ou souvent remplacés par de "?"

Merci d'avance

2 réponses

  1. Contributeur
    'lut, plutôt que de faire un nombre in-mesurable de
    str_replace
    , fais plutôt un seul
    strstr
    avec un tableau de correspondance comme je l'ai fait ici. (j'ai mis un lien car CCM remplace les lettres justement)
    1. Merci infiniment ! C'est EXACTEMENT ce que je cherchais a dire et a faire !

      Merci gravgun !
      1. Désolé, j'ai un soucis sur ces caractères :
        '"'=>'& #34;', 
        '&'=>'& #38;',
        '<'=>'& #60;',
        '>'=>'& #62;'
        Vous savez comment résoudre cela ?
      2. Contributeur
        Évidemment... Comme ces chaînes de caractères vont dans une requête SQL, il faut utiliser la fonction mysql_real_escape_string sur chacune des variables
        $Description
        ,
        $Conseil
        et
        $Resultat
        :
        $Description = mysql_real_escape_string(strtr($Description, $remplace););

        La chaîne de caractères finira comme prévue dans la base de données.
      3. Encore une fois merci gravgun !

        Je penses que cet article est sujet à un cours complet sur le
        str_replace
        :p