remplacement charactère strtr

Eléphant du PHP | 110 Messages

01 oct. 2008, 15:23

salut
j'ai un comportement etrange avec "strtr"
voici le code que je tape
 <?php
   
      // enlever les accents
   		
 $dest_fichier ="ùùbràno";
     
 $dest_fichier = strtr($dest_fichier,'àtttù','abcdu');

      ?> 

et j'obtiens le résultat suivant:
a¹a¹brabno
pour ù j'obtiens a1
et pour à j'obtiens ab
je ne comprend pas les correspondance est ce un probleme d'encodage des charactere ???
merci A+

ViPHP
ViPHP | 4039 Messages

01 oct. 2008, 16:27

En quel encodage est ton fichier ? (ps: le mieuw, c'est utf-8)
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphant du PHP | 110 Messages

06 oct. 2008, 09:44

salut
toujours embeté pour remplacer des caracteres
je fait le chose suivante

Code : Tout sélectionner

<?php $test ="ùàààààà"; $test=utf8_decode($test); $test=trim($test); // remplacer les caracteres $dest_fichier = strtr('ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ','AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy',$test); echo $dest_fichier; ?>
j'ai comme retour
ÀÃ

ViPHP
AB
ViPHP | 5818 Messages

06 oct. 2008, 18:37

Déjà l'ordre des tes arguments n'est pas correct concernant la fonction strtr()

Ensuite strtr n'est pas adapté pour travailler directement en utf8. Regarde la doc pour comprendre les manip nécessaires.

Cela dit pour éviter ces manipulations tu peux utiliser str_replace() à la place de strtr() ex:
     header('Content-type: text/html; charset=UTF-8');

         
     $test = 'ùàààààà';

     $test = trim($test);
    
     // remplacer les caracteres
     $cible = array('À','Á','Â','Ã','Ä','Å','Ç','È','É','Ê','Ë','Ì','Í','Î','Ï','Ò','Ó','Ô','Õ','Ö','Ù','Ú','Û','Ü','Ý','à','á','â','ã','ä','å','ç','è','é','ê','ë','ì','í','î','ï','ð','ò','ó','ô','õ','ö','ù','ú','û','ü','ý','ÿ');
	 $rempl = array('A','A','A','A','A','A','C','E','E','E','E','I','I','I','I','O','O','O','O','O','U','U','U','U','Y','a','a','a','a','a','a','c','e','e','e','e','i','i','i','i','o','o','o','o','o','o','u','u','u','u','y','y');
	 
	 $result = str_replace($cible, $rempl, $test);

	echo $result;

Eléphant du PHP | 110 Messages

06 oct. 2008, 23:00

merci
je regarde ca de plus pres
a+