2011-08-10 3 views
0

J'espère que quelqu'un pourra vous aider;Aide pour remplacer les caractères

J'essaye d'écrire une fonction qui remplace les caractères spéciaux et renvoie la bonne.

C'est ce que j'ai jusqu'à présent:

function convertlatin($output){ 

    $latinchar = array("€", "‚","Æ'","„","…","‡","ˆ","‰","Å","‹","Å'",'Ž','‘','’','“','â€','•','â€"','â€"','Ëœ','â"¢','Å¡','›','Å"',"ž",'Ÿ','¡','¢','£','¤','Â¥','¦','§','¨','©','ª','«','¬','®','¯','°','±','²','³','´','µ','¶','·','¸','¹','º','»','¼',"½",'¾','¿','À','Ã','Â','Ã','Ã"','Ã…','Æ','Ç','È','É','Ê','Ë','ÃŒ ','Ã','ÃŽ','ß','Ã',"Ã'","Ã'",'Ã"','Ã"','Õ','Ö','×','Ø','Ù','Ú','Û','Ãœ','Ã','Þ','ß','Ã','á','â','ã','ä','Ã¥','æ','ç','è','é','ê','ë','ì','Ã','î','ï','ð','ñ','ò','ó','ô','õ','ö','÷','ø','ù','ú','û','ü','ý',"þ","ÿ"); 
    $correctchar = array("€", "‚","ƒ",'"','…','‡','ˆ','‰',"Š",'‹','Œ','Ž',"'","'",'"','"','•','–','—','˜','™','š','›','œ','ž','Ÿ','¡','¢','£','¤','¥','¦','§','¨','©','ª','«','¬','®','¯','°','±','²','³','´','µ','¶','·','¸','¹','º','»','¼','½','¾','¿','À','Á','Â','Ã','Ä','Å','Æ','Ç','È','É','Ê','Ë','Ì','Í','Î','Ï','Ð','Ñ','Ò','Ó','Ô','Õ','Ö','×','Ø','Ù','Ú','Û','Ü','Ý','Þ','ß','à','á','â','ã','ä','å','æ','ç','è','é','ê','ë','ì','í','î','ï','ð','ñ','ò','ó','ô','õ','ö','÷','ø','ù','ú','û','ü','ý','þ',"ÿ"); 

    $returnval = str_replace($latinchar, $correctchar, $output); 

    echo($returnval); 
    return $returnval; 
} 

Le problème que j'ai est que je pensais que cela fonctionnait, mais il a des résultats aléatoires, comme si elle trouve une correspondance sur un seul des personnages qu'il remplace un autre dans ce tableau. Ce que je voudrais faire est de trouver et de remplacer une correspondance exacte du caractère latin dans une chaîne fournie par exemple "testing" avec "testing" - au moment où il remplace ¿avec testing -

Il semble juste de remplacer un caractère dans certaines occasions, quand je voudrais qu'il corresponde et remplace les deux paramètres. J'ai également essayé strcmp avec pas beaucoup de succès.

Des idées?

+0

Le code n'a pas d'erreurs - il devrait fonctionner correctement. Vous voulez nous donner des exemples de ces «cas limites»? – foxy

+0

Salut - c'est un – mro

+0

whoops. Ici c'est ¿gets Á¿ au lieu de ÿ – mro

Répondre

6

On dirait que votre problème n'est pas faux caractères, c'est plus un mauvais encodage. Peut-être que vous feriez mieux de changer l'encodage de $ output. utf8_encode ne vous aidera pas, les "mauvais" caractères ressemblent à une mauvaise entrée Windows-1252 convertie.

Essayez:

echo mb_convert_encoding('testingÿ','CP1252','UTF-8'); 
Questions connexes