簡體   English   中英

檢查字符串是否包含除允許的字符以外的任何字符

[英]check if string contains any character other than what's allowed

在用戶名中-我只允許使用我想要的字母數字字符和其他10個UTF8字符。 這樣做的正確方法是什么? Pref函數是否會出現UTF8問題,我是否需要使用其他方法?

謝謝

最近,到如何制作“正確做正確的事情”,並了解到要使所有事情正確無誤是很棘手的。

如果您無法使/\\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.com來推薦regexbuddy。

為了獲得適當的Unicode支持(包括適當的區分大小寫),您需要使用'/u'修飾符IIRC。 但是,但是,但是,但是:請注意,大多數其他 PHP函數會將PHP字符串視為字節字符串(而不是字符串),這意味着,如果您執行諸如stripos() ,則會得到字節索引而不是字符索引的偏移量,而且對於格式錯誤的UTF-8,它們將無法可靠地工作(因為它們匹配字節序列而不是字符序列)。

另外,請注意,如果您需要在不使用UTF-8作為系統區域設置的地方運行此腳本,則UTF-8文字可能不是一個好主意(Windows)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM