尽管关于非英文字符正则表达式问题有很多问题,但我一直无法找到有效的答案。此外,似乎没有任何简单的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