2014-11-24 72 views
0

我使用這種方式找到我的文字西里爾符號如預期,但在統一貨幣符號「₴」(烏克蘭赫裏夫尼亞)和「€」(歐元)的preg_match不工作

$pat = '/.*[А-Яа-яёЁ].*/'; 
$res = preg_match($pat, $str); 
返回true

問題是什麼?

+0

不知道太多關於Unicode的順序我自己,是有可能,А-Я之間或а-я之間存在的Unicode貨幣符號值?這似乎不太可能,但值得一看? – 2014-11-24 11:21:12

回答

2

你應該讓你的模式也支持Unicode與/u修改:

$pat = '/.*[А-Яа-яёЁ].*/u'; 
$res = preg_match($pat, $str); 

報價the doc

U(PCRE_UTF8)

這個修飾符打開PCRE的附加功能是與Perl不兼容。模式和主題字符串被視爲UTF-8。

Demo。順便說一句,如果你只檢查西裏爾字母是否存在字符串中沒有對比賽做任何事情(和你做給定的代碼),你可以從你的圖案下降.*部分。

+0

謝謝。所有工作都如預期的那樣工作。 – 2014-11-24 11:52:50