preg_match utf-8字符串的快捷方法

时间:2013-11-24 19:41:53

标签: php utf-8 preg-match-all

$input = "žąsis su šešiolika žąsyčių";
preg_match_all("/\b(žąs\S*)/iu", $input, $output_array);
print_r($output_array);

一无所获。我希望它能同时返回“žąsis”和“žąsyčių”。似乎是一个简单的问题,但我找不到一个简单的答案。我应该以某种方式对主题和模式进行编码还是?..

通过意义“一无所有”,我指的是一个空的多维数组

Array ( [0] => Array ( ) [1] => Array ( ) )

1 个答案:

答案 0 :(得分:0)

尝试将UTF8序列添加到模式的开头:

$input = "žąsis su šešiolika žąsyčių";
preg_match_all("/(*UTF8)(žąs\S*)/iu", $input, $output_array);
print_r($output_array);

修改

我在PHP 5.2.17和5.3.20上测试了这个...我在使用5.3.20时似乎没有任何问题,但我获得相同的空输出使用5.2.17。虽然我找不到任何解决其原因的文档,但在删除第一个\b(字边界)时问题似乎消失了。这里有一个截图,其中包含输出,PHP版本,加载的扩展和源代码(如果这没有帮助,请确保您将文档保存为UTF8而不是Windows喜欢将其保存为):

enter image description here