Str_replace avec une variable ne marche pas
pols12
Messages postés
1143
Date d'inscription
Statut
Membre
Dernière intervention
-
sob_12 Messages postés 338 Statut Membre -
sob_12 Messages postés 338 Statut Membre -
Bonjour,
Je crois que mon code expliqe a peu près tout, donc, le voici:
Là, ca ne transforme rien du tout, ca renvoi le résultat tel quel. Par contre, si je remplace cette ligne:
Par cette ligne:
Il m'affichera
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?
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?
A voir également:
- Str_replace avec une variable ne marche pas
- Variable d'environnement temp - Forum Word
- Ce programme est écrit en python. il construit un mot secret dans une variable mais il ne l'affiche pas. modifiez-le pour qu'il affiche le mot secret. exécutez-le. quel est ce mot secret ? ✓ - Forum Python
- Ce programme est écrit en python. il construit un mot secret dans une variable mais il ne l'affiche pas. modifiez-le pour qu'il affiche le mot secret. exécutez-le. quel est ce mot secret? ✓ - Forum Python
- Vérifiez la variable d'environnement TEMP. QUE FAIRE ????? ✓ - Forum Microsoft Office
- Vba excel sélectionner une plage de cellules variable ✓ - Forum Excel
6 réponses
Bonjour
PHP à des fonction déjà prévu pour décodé l'utf8 exemple : utf8_decode()
voir la doc de php : https://www.php.net/manual/fr/function.utf8-decode.php
PHP à des fonction déjà prévu pour décodé l'utf8 exemple : utf8_decode()
voir la doc de php : https://www.php.net/manual/fr/function.utf8-decode.php
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. ;)
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. ;)
Ca ne marche pas:
Si je mets ce code:
ê 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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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à!
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à!
D'accord.
Généralement ces erreur c'est parce que la page que tu visite crois avoir a faire a du iso alors que tu lui donne du utf8 ce qui donne ce bug tu peut essayé
https://www.php.net/manual/fr/function.htmlentities.php
et sa devrait l'affiché correctement vu que sa le transforme en iso
Généralement ces erreur c'est parce que la page que tu visite crois avoir a faire a du iso alors que tu lui donne du utf8 ce qui donne ce bug tu peut essayé
https://www.php.net/manual/fr/function.htmlentities.php
et sa devrait l'affiché correctement vu que sa le transforme en iso