2017-02-23 162 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}/