儘管關於非英文字符正則表達式問題有很多問題,但我一直無法找到有效的答案。此外,似乎沒有任何簡單的PHP庫可以幫助我過濾非英文輸入。正則表達式驗證和消毒所有英文和非英文unicode字母字符在PHP中
可否請你建議我正則表達式,這將允許
- 所有英文字母字符(ABC ...)
- 所有非英文字母字符(šýüčá...)
- 空間
- 不區分大小寫
在驗證以及消毒。基本上,我希望preg_match在輸入包含除上述4個點以外的任何內容時返回false,或者preg_replace除去這4個類別中的所有內容。我可以從http://www.regular-expressions.info/unicode.html創建 '/^((\p{L}\p{M}*)|(\p{Cc})|(\p{Z}))+$/ui'
。這個正則表達式在驗證輸入時效果很好,但在消毒時不起作用。
編輯:
用戶輸入 '捷克克魯姆[jazyk]' 作爲輸入。在preg_match中使用'/^[\p{L}\p{Zs}]+$/u'
,該腳本確定該字符串包含不允許的字符(在本例中爲'['和']')。接下來我想使用preg_replace來刪除那些不需要的字符。我應該將哪個正則表達式傳入preg_replace以匹配上述正則表達式未指定的所有字符?
首先,你不知道上下文。其次,試圖讓跨國alphpabet似乎不是對我的歧視。 – ondrejba
定義「消毒」。 – tchrist
在這種情況下,僅僅是爲了消除任何危害我網站安全的角色。 – ondrejba