Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用RegEx名称,如José;Gonzá;莱兹?_Php_Regex - Fatal编程技术网

Php 如何使用RegEx名称,如José;Gonzá;莱兹?

Php 如何使用RegEx名称,如José;Gonzá;莱兹?,php,regex,Php,Regex,我正试着注册一个人的名字。我想,何塞·冈萨雷斯很难对付。 我发现以下代码不起作用 preg_match("/^[[:alpha:]'-\s]+$/", $input); 我试着换成 preg_match("/^[[:print:]'-\s]+$/", $input); 或 及 没有成功。唯一匹配的字符是“Jos”您可以使用此正则表达式来匹配该名称: "#[\p{L} ]+#u" u标志用于在正则表达式中使用unicode字符 \p{L}正在匹配unicode中的任何单词字符 preg\u

我正试着注册一个人的名字。我想,何塞·冈萨雷斯很难对付。 我发现以下代码不起作用

preg_match("/^[[:alpha:]'-\s]+$/", $input);
我试着换成

preg_match("/^[[:print:]'-\s]+$/", $input);


没有成功。唯一匹配的字符是“Jos”

您可以使用此正则表达式来匹配该名称:

"#[\p{L} ]+#u"
  • u
    标志用于在正则表达式中使用unicode字符
  • \p{L}
    正在匹配unicode中的任何单词字符

preg\u match
不是SQL语句。这与SQL有什么关系?这是一个PHP问题吗?这应该是sql Insert之前的一个安全检查检查类似问题的解决方案:非常感谢Yousf!这是工作!你的意思是防止sql注入?使用参数化查询来实现这一点更好、更安全、更容易、更快(更具可伸缩性)。正则表达式可能会捕获一些注入攻击,但不是全部。参数化查询将参数作为RPC调用的一部分传递到语句外部,因此绝对不可能在该级别进行注入。当然,如果您在其他地方使用字符串连接来创建具有此值的其他语句,您将再次遇到麻烦。这就是为什么不应该使用字符串连接的原因
preg_match("/^[[:alpha:][:punct:]\`\´-\s]+$/", $input);
"#[\p{L} ]+#u"