[英]check if string contains any character other than what's allowed
在用戶名中-我只允許使用我想要的字母數字字符和其他10個UTF8字符。 這樣做的正確方法是什么? Pref函數是否會出現UTF8問題,我是否需要使用其他方法?
謝謝
Preg是您最好的選擇。 做這樣的事情,用您選擇的允許字符替換我以前使用的隨機日語字符。
if (preg_match('/[\x{0030}-\x{0039}\x{0041}-\x{005A}\x{0061}\-u007A]+/u', $subject)) {
return true;
}
return false;
如果您需要有關正則表達式的幫助,那么我建議您使用regexbuddy.com來推薦regexbuddy。
為了獲得適當的Unicode支持(包括適當的區分大小寫),您需要使用'/u'
修飾符IIRC。 但是,但是,但是,但是:請注意,大多數其他 PHP函數會將PHP字符串視為字節字符串(而不是字符串),這意味着,如果您執行諸如stripos()
,則會得到字節索引而不是字符索引的偏移量,而且對於格式錯誤的UTF-8,它們將無法可靠地工作(因為它們匹配字節序列而不是字符序列)。
另外,請注意,如果您需要在不使用UTF-8作為系統區域設置的地方運行此腳本,則UTF-8文字可能不是一個好主意(Windows)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.