在用戶名以外的任何字符 - 我想只允許字母數字字符,並且我想其他10個UTF8字符。什麼是適當的方式來做到這一點? UTF8會成爲preg函數的問題,我需要使用另一種方法嗎?檢查如果字符串包含允許的內容
謝謝
在用戶名以外的任何字符 - 我想只允許字母數字字符,並且我想其他10個UTF8字符。什麼是適當的方式來做到這一點? UTF8會成爲preg函數的問題,我需要使用另一種方法嗎?檢查如果字符串包含允許的內容
謝謝
我recently asked如何使這只是做正確的事,並瞭解到,這是相當多刺把一切完全正確。
如果你不能得到/\w/u
在Unicode上適合你,它主要是/[\pL\pM\p{Nd}\p{Nl}\p{Pc}]/u
。
Preg是你最好的選擇。做一些這樣的事情,替換隨機的日文字符,我用你選擇允許的字符。
if (preg_match('/[\x{0030}-\x{0039}\x{0041}-\x{005A}\x{0061}\-u007A]+/u', $subject)) {
return true;
}
return false;
如果需要使用正則表達式的表達式,然後我建議使用RegexBuddy,你可以在regexbuddy.com
得到適當的Unicode支持(包括適當的情況下,意識)幫助您需要使用'/u'
修改IIRC 。但是,但是,但是:要知道,大多數其他 PHP函數將把PHP字符串作爲字節字符串(不是字符串),這意味着如果你在做喜歡的東西stripos()
你會得到字節偏移量指標,而不是字符索引,並且它們不能可靠地用於畸形的UTF-8(因爲它們匹配字節序列而不是字符序列)。
另外請注意,UTF-8文字可能不是一個好主意,如果你需要在某個地方運行該腳本不使用UTF-8作爲系統區域設置(Windows)中。
當你嘗試它有用嗎? – 2011-04-25 01:41:51