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