Aide sur str_replace();

Résolu
Sinistrus Messages postés 1010 Date d'inscription   Statut Membre Dernière intervention   -  
Sinistrus Messages postés 1010 Date d'inscription   Statut Membre Dernière intervention   -
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. ElementW Messages postés 5690 Statut Contributeur 1 293
     
    '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
  2. Sinistrus Messages postés 1010 Date d'inscription   Statut Membre Dernière intervention   17
     
    Merci infiniment ! C'est EXACTEMENT ce que je cherchais a dire et a faire !

    Merci gravgun !
    0
    1. Sinistrus Messages postés 1010 Date d'inscription   Statut Membre Dernière intervention   17
       
      Désolé, j'ai un soucis sur ces caractères :
      '"'=>'& #34;', 
      '&'=>'& #38;',
      '<'=>'& #60;',
      '>'=>'& #62;'
      Vous savez comment résoudre cela ?
      0
    2. ElementW Messages postés 5690 Statut Contributeur 1 293
       
      É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.
      0
    3. Sinistrus Messages postés 1010 Date d'inscription   Statut Membre Dernière intervention   17
       
      Encore une fois merci gravgun !

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