我有这种字符串
sample İletişim form:: aşağıdaki formu
我的目标是使用preg_match或preg_match_all的php提取其中包含unicode / non-ascii字符的字符串。
所以我只期待2 İletişim和aşağıdaki字的结果。
Array
(
[0] => İletişim
[1] => aşağıdaki
)
我无法想到正则表达,因为我不擅长它。 欢迎任何帮助。
非常感谢你。
答案 0 :(得分:1)
我认为你想要的解决方案的开始就在这里:How do I detect non-ASCII characters in a string?
通过使用preg_match(),你可以像这样做smthg:
preg_match_all('/[^\s]*[^\x20-\x7f]+[^\s]*/', $string, $matches);
print_r($matches);
或者,如果没有preg_match,您可以使用函数mb_detect_encoding()来测试字符串的编码。在您的情况下,您可以这样使用它:
$matches = array_filter(explode(' ', $string), function($item) {
return !mb_detect_encoding($item, 'ASCII', TRUE);
});
print_r($matches);
但最后一个有点扭曲^^
答案 1 :(得分:1)
您可以使用unicode属性:
$string = 'sample İletişim form:: aşağıdaki formu';
preg_match_all("/(\pL+)/u", $string, $matches);
print_r($matches);
<强>输出:强>
Array
(
[0] => Array
(
[0] => sample
[1] => İletişim
[2] => form
[3] => aşağıdaki
[4] => formu
)
[1] => Array
(
[0] => sample
[1] => İletişim
[2] => form
[3] => aşağıdaki
[4] => formu
)
)