2010-11-19 52 views
0

我使用此代碼來改變每個符號具有不同符號的字符串:更改每個符號串

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

但我收到此錯誤信息:

警告:的preg_replace() [ function.preg-replace]:無結尾 分隔符' '發現於...

任何人都可以請幫忙嗎?

+3

爲什麼不使用'str_replace'? – Gumbo 2010-11-19 15:54:09

+1

是你的字符集正確嗎? – 2010-11-19 15:56:26

+0

什麼是完整的錯誤信息? – 2010-11-19 15:58:11

回答

4

正則表達式不是單字符替換的理想解決方案。使用strtr

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

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

str_replace然後,而不是strstr – Andy 2010-11-19 16:02:50

+2

@Andy仔細閱讀; 'strtr'!='strstr' – meagar 2010-11-19 16:04:06

+0

哈哈!是的,我的壞! – Andy 2010-11-19 16:12:22

0

如果您的字符串是UTF-8,請嘗試preg_replace/u修飾符。

0

圖案表達式PHP’s PCRE functions要求delimiters從任選的改性劑分開的圖案。在您的情況下,$qart值之一沒有/作爲分隔符(即)。

但是,爲什麼你仍然使用正則表達式呢?我不明白爲什麼你不用簡單的字符串替換str_replace。它也可以將數組用於搜索和替換。