2011-04-21 56 views
6

我使用下面的代碼來檢查字符串,其中所有字符都是大寫字母:如何確定非英文字符串是否大寫?

 if (preg_match('/^[\p{Lu}]+$/', $word)) { 

這對於英語的偉大工程,但沒有檢測到有口音,俄文字母,字母等。 \ p {Lu}應該適用於所有語言嗎?有更好的方法嗎?

+0

我一直認爲'\ p {Lu}'應該適用於所有Unicode支持的字母表。是否完全不認識任何西裏爾字母爲大寫字母? – 2011-04-21 21:27:44

+1

那麼,它在Perl中工作正常,因爲如果數據是字符數據而不是字節數據,或者它在模式中看到Unicode屬性,Perl會自動打開'/ u'。可惜的是,雖然PHP默認情況下並沒有在Unicode中使用PCRE。有沒有辦法在其他地方打開'/ u'',就像你可以在Perl中一樣?順便說一句,如果它與大小寫不敏感相匹配,那麼您可能仍然希望在範圍內使用Unicode,因爲[我們剛剛修復了一個錯誤](http://www.perlmonks.org/?node_id=900689)與此相關。我自己還沒有和PCRE進行同等測試。 – tchrist 2011-04-21 21:53:58

回答

6

一個特殊選項是打開Unicode匹配模式的/ u,而不是默認的8位匹配模式。對於使用\ x {FFFF},\ X或\ p {L}來匹配Unicode字符,字形,屬性或腳本的正則表達式,您應該指定/ u。 PHP會將'/ regex/u'解釋爲UTF-8字符串而不是ASCII字符串。使用功能

+0

這樣做!感謝您及時的回覆。 – 2011-04-21 21:42:39

0

ü可以做改變字符串的大寫.... 功能可在這裏 -

http://www.regular-expressions.info/php.html: 字符串名稱= 「馬尼什niitian」; console.Writeline(「你的字符串大寫:」+ name.UPPERCASE());

相關問題