[PHP] str_replace qui remplace pas ??

karine666 Messages postés 48 Date d'inscription   Statut Membre Dernière intervention   -  
gryzzly Messages postés 4608 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'ai un ptit soucis avec str_replace sous php. Je ne comprends pas pourquoi ca marche pas... et vu l'heure, je suis trop flappi. Sans doute est ce bête et saurez vous rapidement fixer mon erreur.


Le but du code est de remplacer les caractères exotiques (é,è,ü...) par des equivalents sans accents.
Voici mon code (php) :
echo "1:".$found_designation."<br>";
$eee = array("é", "è", "ê");
$txt= str_replace( $eee , 'e' , $found_designation );
echo "2:".$txt."<br>";
$aaa = array("à", "á", "ä");
$txt = str_replace($aaa,"a",$txt);
echo "3:".$txt."<br>";
$uuu = array("ü", "ù");
$txt = str_replace($uuu,"u",$txt);
echo "4:".$txt."<br>";

Et ca me donne :
1:la sorcière romantique
2:la sorcière romantique
3:la sorcière romantique
4:la sorcière romantique

Bref, il se passe pas grand chose... help !

En esperant que je ne suis pas devenue folle...
Cordialement
A voir également:

8 réponses

gryzzly Messages postés 4608 Date d'inscription   Statut Contributeur Dernière intervention   1 335
 
C'est parce que tu transmet un tableau $aaa = array() à str_replace, et non pas des chaines, ou alors, le deuxieme paramètre de str_replace devrait êtr eun tableau comprenant autant d'éléments répétés que d'éléments à remplacer
Trois solutions :
foreach($aaa as $a){
$txt = str_replace($a,"a",$txt); 
}
...

Ou
$txt = str_replace($aaa, array('a','a','a'), $txt); 
}
...

Ou, beaucoup plus simple :
$txt = strtr($txt, 'àáâãäåÂÄÃÀòóôõöÔÖÒÕøèéêëÊËÈçìíîïÎÏÌùúûüÛÜÙÿñ', 'aaaaaaAAAAooooooOOOOeeeeEEEciiiiIIIuuuuUUUyn');


EDIT : j'ai dit une connerie :
Si search est un tableau et que replace est une chaîne, alors la chaîne de remplacement sera utilisée pour chaque élément de search

Je relis ton code
0
karine666 Messages postés 48 Date d'inscription   Statut Membre Dernière intervention   5
 
Merci pour ton aide,

J'ai effectivement un resultat, meme si c pas tout á fait ca ;

code php :
echo "1:".$found_designation."<br>";
$txt = strtr($found_designation, 'àáâãäåÂÄÃÀòóôõöÔÖÒÕøèéêëÊËÈçìíîïÎÏÌùúûüÛÜÙÿñ', 'aaaaaaAAAAooooooOOOOeeeeEEEciiiiIIIuuuuUUUyn');
echo "2:".$txt."<br>";

resultat :
1:la sorcière romantique
2:la sorciA�re romantique

.. ?
0
gryzzly Messages postés 4608 Date d'inscription   Statut Contributeur Dernière intervention   1 335
 
Atta, j'vais copier ton code et le tester en local ... je parle dans le vide là. La fatigue sans doute, il est vraiment tard...
0
karine666 Messages postés 48 Date d'inscription   Statut Membre Dernière intervention   5
 
moi aussi... merci pour ton aide..
je file me coucher...
@+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gryzzly Messages postés 4608 Date d'inscription   Statut Contributeur Dernière intervention   1 335
 
Bon, j'ai vérifié, mon code fonctionne correctement :
<?php
$found_designation = "sorcière rômantïque";
echo "1:".$found_designation."<br>";
$txt = strtr($found_designation, 'àáâãäåÂÄÃÀòóôõöÔÖÒÕøèéêëÊËÈçìíîïÎÏÌùúûüÛÜÙÿñ', 'aaaaaaAAAAooooooOOOOeeeeEEEciiiiIIIuuuuUUUyn');
echo "2:".$txt."<br>"; 
?>


Le problème vient juste de l'encodage des caractères et/ou du fichier et/ou de l'encodage de l'affichage navigateur(ansi / utf8)
0
gryzzly Messages postés 4608 Date d'inscription   Statut Contributeur Dernière intervention   1 335
 
Exemple :

Fichier encodé ANSI, caractères aussi, affichage navigateur iso :
1:sorcière rômantïque
2:sorciere romantique

Fichier encodé ANSI, caractères aussi, affichage navigateur utf8 :
1:sorci�re r�mant�que
2:sorciere romantique

Fichier encodé UTF8, caractères ASCII, affichage navigateur UTF8 :
1:sorcière rômantïque
2:sorciyUre ryEmanty�que

---> il faut que tout soit encodé de la même façon :o)
0
karine666 Messages postés 48 Date d'inscription   Statut Membre Dernière intervention   5
 
hello,

ca devient tricky ! ma page est encodé en utf-8.
Ce que je ne pige pas est que je remplace les caractères exotiques par des caractères std.

echo "1:".$found_designation."<br>";
$txt = strtr($found_designation, 'àáâãäåÂÄÃÀòóôõöÔÖÒÕøèéêëÊËÈçìíîïÎÏÌùúûüÛÜÙÿñ', 'aaaaaaAAAAooooooOOOOeeeeEEEciiiiIIIuuuuUUUyn');
echo "2:".$txt."<br>";

donc $txt ne devrait pas avoir de probleme d'affichage, qqs soit le type de codage choisi, non ?

pourtant :
1:la sorcière romantique
2:la sorciA�re romantique

?
0
gryzzly Messages postés 4608 Date d'inscription   Statut Contributeur Dernière intervention   1 335
 
Je bloque pour l'utf8.
Sûr, ça fonctionne en ISO8859.1, mais là, je sèche. Il doit falloir utiliser une autre forme de désignation des caractères.
0