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''? –