更改字符串中的每个符号

时间:2010-11-19 15:52:47

标签: php preg-replace

我使用此代码更改具有不同符号的字符串中的每个符号:

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

但我收到此错误消息:

  

警告:preg_replace()   [function.preg-replace]:没有结局   分隔符' '在...中找到。

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:4)

正则表达式不是单字符替换的理想解决方案。使用strtr

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

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

答案 1 :(得分:0)

如果您的字符串是UTF-8,请尝试使用preg_replace / u修饰符。

答案 2 :(得分:0)

PHP’s PCRE functions的模式表达式需要delimiters将模式与可选修饰符分开。在您的情况下,其中一个$qart值没有/作为分隔符(即)。

但是为什么你还要使用正则表达式呢?我不认为你不需要使用str_replace的简单字符串替换。它也可以用于搜索和替换阵列。