2017-02-23 118 views
2

替换所有条件好像基于的preg_match使用ANY

preg_match('/^[\p{Cyrillic}]+$/', $str) 

返回0或1,如果$str包含ALL西里尔字母。

我需要0或1的基础上如果$str包含任何西里尔字母。

谢谢。

回答

1

您可以使用:

$ret = preg_match('/\p{Cyrillic}/u', $str); 

推测,如果输入的字符串中包含任何Cyrillic字符或没有。需要使用/u标志来处理unicode字符串输入。

或者使用mb_ereg function多字节正则表达式匹配这样的:

$str = 'БДКЯ'; // string with Cyrillic characters only 

// check with Cyrillic string only 
var_dump(mb_ereg('\p{Cyrillic}', $str)); // int(1) 

// check with mix of Cyrillic and ASCII characters 
var_dump(mb_ereg('\p{Cyrillic}', $str . 'abc')); // int(1) 

// check with ASCII characters only 
var_dump(mb_ereg('\p{Cyrillic}', 'abc')); // bool(false) 
1

^$强制{Cyrillic}字符匹配从字符串的开头到结尾,所以删除它们。另外,也没有必要的字符类[]+,因为你正在寻找任何比赛:

/\p{Cyrillic}/