正则表达式发出unicode字符,将post解析为preg_match是否安全?

时间:2016-01-27 07:23:45

标签: php regex

我试图让这个东西在我接受所有unicode字母的地方工作,所以可以覆盖来自世界各地的乌尔都语和其他特殊字母等语言。

试过这个:

/^[\p{L}\p{Zs}\p{N}]+$/uix

但它让我不知道我做错了什么?甚至尝试了一些正则表达式工具,只是无法以任何方式使用它。

有了它的工作我发现这是我的捣乱结果,但使用$ _POST与preg_match是否安全?

!preg_match("/^[\\p{L}\\p{Zs}\\p{N}\\p{M}]+$/u", $_POST['firstname'])

1 个答案:

答案 0 :(得分:1)

您可以使用

'/^[\p{L}\p{M}\p{Zs}\p{N}]+$/u'

请注意,乌尔都语和许多其他语言都有变音符号,而\p{M}与它们匹配。

使用单引号文字时,不需要加倍反斜杠。

使用POST,您似乎只需要确保设置了值并使用字符串。

if ( isset( $_POST[ 'firstname' ] ) ) {
  $name = strip_tags( trim( $_POST[ 'firstname' ] ) );
}

请参阅this article