2010-11-19 6 views
0

J'utilise ce code pour changer chaque symbole dans une chaîne avec symbole différent:Changer chaque symbole dans la chaîne

$test = "უნდა არ არ ყაზახმა ერთი ორსავეს დათვალიერებული. გულის ჩავარდნილი დაეძებდა მათი"; 
$qart = array("/ა/", "/ბ/", "/გ/", "/დ/", "/ე/", "/ვ/", "/ზ/", "/თ/", "/ი/", "/კ/", "/ლ/", "/მ/", "/ნ/", "/ო/", "/პ/", "/ჟ/", "/რ/", "/ს/", "/ტ/", "/უ/", "/ფ/", "/ქ/", "ღ", "/ყ/", "/შ/", "/ჩ/", "/ც/", "/ძ/", "/წ/", "/ჭ/", "/ხ/", "/ჯ/", "/:ჰ:/"); 
$eng = array("À","Á","Â", "Ã", "Ä", "Å", "Æ", "È", "É", "Ê", "Ë", "Ì", "Í", "Ï", "Ð", "Ñ", "Ò", "Ó", "Ô", "Ö", "×", "Ø", "Ù", "Ú", "Û", "Ü", "Ý", "Þ", "ß", "à", "á", "ã", "ä"); 
echo preg_replace($qart, $eng, $test); 

mais je reçois ce message d'erreur:

Attention: preg_replace() [ function.preg-replace]: Pas de fin délimiteur ' ' trouvé dans ...

Quelqu'un peut-il aider s'il vous plaît?

+3

Pourquoi n'utilisez-vous pas 'str_replace'? – Gumbo

+1

votre jeu de caractères est-il correct? –

+0

Quel est le message d'erreur complet? –

Répondre

4

Les expressions régulières ne sont pas la solution idéale pour le remplacement d'un seul caractère. Utilisez strtr:

$pairs = array (
    'ა' => 'À', 
    'ბ' => 'Á', 
    'გ' => 'Â', 
    // ... 
); 

$test = strtr($test, $pairs); 
+0

str_replace puis, pas strstr – Andy

+2

@Andy Lire de près; 'strtr'! =' strstr' – meagar

+0

Haha! Oui, mon mal! – Andy

0

Essayez le modificateur preg_replace/u si votre chaîne est en UTF-8.

0

L'expression de motif pour PHP’s PCRE functions exigent delimiters qui séparent le motif de modificateurs facultatifs. Dans votre cas, l'une des valeurs $qart n'a pas de / en tant que délimiteurs (c'est-à-dire ).

Mais pourquoi utilisez-vous des expressions régulières de toute façon? Je ne vois pas pourquoi vous n'utilisez pas le remplacement de chaîne simple avec str_replace. Il peut prendre des tableaux pour la recherche et le remplacement aussi.