str_replace ne fonctionne pas sur variable formulaire avec les caractères ’ et ‘
Posté : 30 déc. 2021, 16:34
Bonjour,
’ et ‘
Ce code
$remplace_caracteres_1 = array('’', '‘');
$remplace_caracteres_2 = array('\'', '`');
fonctionne si la variable est déclarée dans le code de cette façon :
$texte = '’--‘';
/* ici c'est en 1er caractère une apostrophe typographique comme celle de LibreOffice avec la touche 4 alphabétique, soit ’
puis après les 2 tirets du 6, l'accent grave (utilisé pour les requêtes sql, soit ` */
$texte = str_replace($remplace_caracteres_1, $remplace_caracteres_2, $texte);
echo 'texte = '.$texte;
le résultat revoie bien dans le code source :
texte = '--`
mais il ne fonctionne pas si la variable vient d'un formulaire
<form name="xxxxxxxxxxxx" action="xxxxxxxxxxxxx.php" method="post">
passée au extract($_POST,EXTR_OVERWRITE);
le contenu de la variable reste intacte après str_replace
c'est donc avec seulement ces 2 caractères, car testé avec les lettres il fonctionne, et j'ai testé séparément aussi idem.
Pourquoi je veux faire ça ? parce qu'il m'était arrivé qu'une table soit illisible du fait qu'il y avait une apostrophe typographique dans des champs texte que j'y avais écrit, à l'époque j'avais dû faire un remplacement avant de tout réinjecter.
Avez-vous une explication du pourquoi str_replace ne fonctionne pas avec ces caractères sur une variable venant d'un method="post" ou une autre solution pur les remplacer ?
Sinon je le ferai manuellement par un rechercher/remplacer dans un bloc texte.
Merci.
’ et ‘
Ce code
$remplace_caracteres_1 = array('’', '‘');
$remplace_caracteres_2 = array('\'', '`');
fonctionne si la variable est déclarée dans le code de cette façon :
$texte = '’--‘';
/* ici c'est en 1er caractère une apostrophe typographique comme celle de LibreOffice avec la touche 4 alphabétique, soit ’
puis après les 2 tirets du 6, l'accent grave (utilisé pour les requêtes sql, soit ` */
$texte = str_replace($remplace_caracteres_1, $remplace_caracteres_2, $texte);
echo 'texte = '.$texte;
le résultat revoie bien dans le code source :
texte = '--`
mais il ne fonctionne pas si la variable vient d'un formulaire
<form name="xxxxxxxxxxxx" action="xxxxxxxxxxxxx.php" method="post">
passée au extract($_POST,EXTR_OVERWRITE);
le contenu de la variable reste intacte après str_replace
c'est donc avec seulement ces 2 caractères, car testé avec les lettres il fonctionne, et j'ai testé séparément aussi idem.
Pourquoi je veux faire ça ? parce qu'il m'était arrivé qu'une table soit illisible du fait qu'il y avait une apostrophe typographique dans des champs texte que j'y avais écrit, à l'époque j'avais dû faire un remplacement avant de tout réinjecter.
Avez-vous une explication du pourquoi str_replace ne fonctionne pas avec ces caractères sur une variable venant d'un method="post" ou une autre solution pur les remplacer ?
Sinon je le ferai manuellement par un rechercher/remplacer dans un bloc texte.
Merci.