probleme d'accent dans url

Invité
Invité n'ayant pas de compte PHPfrance

07 juin 2009, 18:48

Bonjour,

J'ai une variable que je récupère via un $_GET['q'] hors lorsque cette variable contient des accent je convertit les accent pour pouvoir utiliser la variable selon mon script.

Jusqua la tout va bien.

Le probleme c'est que parfois l'url tranforme les accent par exemple le é par %C3%A9 mais la incapable de convertir les accent ma variable m'affcihe toujours le é !!

Voici mon code :
$remplace = array('à'=>'Qc3Qa0', 
                         'á'=>'Qc3Qa1', 
                         'â'=>'Qc3Qa2', 
                         'ã'=>'Qc3Qa3', 
                         'ä'=>'Qc3Qa4', 
                         'å'=>'Qc3Qa5', 
                         'ò'=>'Qc3Qb2', 
                         'ó'=>'Qc3Qb3', 
                         'ô'=>'Qc3Qb4', 
                         'õ'=>'Qc3Qb5', 
                         'ö'=>'Qc3Qb6', 
                         'è'=>'Qc3Qa8', 
                         'é'=>'Qc3Qa9',
	         '%C3%A9'=>'Qc3Qa9',
                         'ê'=>'Qc3Qaa', 
                         'ë'=>'Qc3Qab', 
                         'ì'=>'Qc3Qac', 
                         'í'=>'Qc3Qad', 
                         'î'=>'Qc3Qae', 
                         'ï'=>'Qc3Qaf', 
                         'ù'=>'Qc3Qb9', 
                         'ú'=>'Qc3Qba', 
                         'û'=>'Qc3Qbb', 
                         'ü'=>'Qc3Qbc', 
                         'ÿ'=>'Qc3Qbf', 
                         'ñ'=>'Qc3Qb1', 
                         'ç'=>'Qc3Qa7', 
                         'ø'=>'Qc3Qb8' 
                         ); 
 $query2 = strtr($query2,$remplace); 

Comment faire pour convertit ici par exmple mon é en Qc3Qa9

PS. j'ai déjà essayer urdecode et rawurldecode sans succès.

MERCI !

ViPHP
ViPHP | 1996 Messages

07 juin 2009, 22:02

Et si tu utilisais str_replace () (je te montre les trois premiers):
$a_remplacer = array ('à', 'á', 'â');

$remplace = array ('Qc3Qa0', 'Qc3Qa1', 'Qc3Qa2');

$chaine = str_replace ($a_remplacer,$remplace,$chaine);
de cette façon si la chaine "à" est trouvée il le remplacera par la chaine "Qc3Qa0".
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphant du PHP | 65 Messages

07 juin 2009, 22:56

Peut-être qu'en vérifiant que :
- ton éditeur de code utilise bien l'encodage utf-8
- le charset utf-8 est indiqué dans les entêtes de toutes tes pages

Code : Tout sélectionner

<meta http-equiv="Content-Type" content="text/html; charset="utf-8">
Alors tu n'auras plus à gérer ce problème é=>%C3%A9.

Sinon, il faut creuser du côté des fonctions utf8_encode(), utf8_decode().

Fred