编写了一个简单的正则表达式来过滤包含俄语单词的字符串。
#^[\p{Cyrillic}\s0-9\-]+$#
我在https://regex101.com/上对其进行了测试——它有效。我将它添加到我的代码中 - 它不起作用......我不明白为什么,我找到了一个在线 PHP 编译器,测试了上面的代码 - 它真的不起作用!
$res = "вопрос";
if(preg_match("#^[\p{Cyrillic}\s0-9\-]+$#", $res)){
echo 'Good';
} else {
echo 'Bad';
}
它产生 Bad,虽然 $res 变量中只有俄语字符,但它应该写成 Good。为什么? http://sandbox.onlinephpfunctions.com/code/07479a932b8b77d28cb07bc36a9ad906ff1da22e
我了解您需要一个正则表达式来搜索文本中的俄语单词。作为一个选项,您可以:
“u”修饰符允许您使用 UTF-8 编码的文本,“i”修饰符负责不区分大小写的搜索。
好吧,要搜索所有俄语单词,我们使用 preg_match_all()
添加修饰符
#^[\p{Cyrillic}\s0-9\-]+$#u