0
如何让用户输入使用连字符自己的姓氏(如Jones-Smith
),但除去所有其他非字母数字?的preg_replace与名称,包括连字符双筒姓氏
目前我使用的是这样的:
$_POST['Surname'] = preg_replace("/[^ \w]+/", "", $_POST['Surname']);
这是完美的,除了它删除连字符。有什么建议?
如何让用户输入使用连字符自己的姓氏(如Jones-Smith
),但除去所有其他非字母数字?的preg_replace与名称,包括连字符双筒姓氏
目前我使用的是这样的:
$_POST['Surname'] = preg_replace("/[^ \w]+/", "", $_POST['Surname']);
这是完美的,除了它删除连字符。有什么建议?
如果你想保持连字符,只需将它们添加到您的否定的字符集是这样的:
$_POST['Surname'] = preg_replace("/[^ \w\-]+/", "", $_POST['Surname']);
摆脱连字符,如果它是班上第一个或最后一个字符是没有必要的。 – mickmackusa
只有1安全可靠的方式准确地匹配名称;一个带有'。*'的名字字段用于验证:http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/ - 已经排除了世界上所有的* O'Malleys *,没有Unicode旗帜,可能是东南亚的大部分地区。 – CD001
为什么不让用户输入任何内容,然后在提交时使用更直接的正则表达式验证,如''〜\ A \ w +(?:[\' - ] \ w +)* \ z〜u''? –