2010-11-19 11 views
0

の各シンボル私は別のシンボルと文字列の各シンボルを変更するには、このコードを使用します。[にpreg_replace() :変更文字列

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

が、私は、このエラーメッセージが出ます:

警告function.preg-replace]:終了しない デリミタ ' 'が見つかりました...

誰でもお手伝いできますか?

+3

なぜ 'str_replace'を使用しないのですか? – Gumbo

+1

はあなたの文字セットは正しいですか? –

+0

完全なエラーメッセージは何ですか? –

答えて

4

正規表現は、1文字の置換に最適なソリューションではありません。 strtrを使用します。

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

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

str_replace strstr – Andy

+2

@Andyよく読んでください。 'strtr'!=' strstr' – meagar

+0

ハハ!ええ、私の悪い! – Andy

0

文字列がUTF-8の場合は、preg_replace/u修飾語を試してください。

0

PHP’s PCRE functionsためのパターン式は、オプションの修飾子からパターンを分離delimitersが必要です。あなたの場合、$qart値の1つに、区切り文字として/(つまり、)がありません。

しかし、どうして正規表現を使うのですか? str_replaceで簡単な文字列置換を使用しない理由はありません。それは、検索と置換のための配列も取ることができます。