2017-06-09 40 views
0

如何讓用戶輸入使用連字符自己的姓氏(如Jones-Smith),但除去所有其他非字母數字?的preg_replace與名稱,包括連字符雙筒姓氏

目前我使用的是這樣的:

$_POST['Surname'] = preg_replace("/[^ \w]+/", "", $_POST['Surname']); 

這是完美的,除了它刪除連字符。有什麼建議?

+0

只有1安全可靠的方式準確地匹配名稱;一個帶有'。*'的名字字段用於驗證:http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/ - 已經排除了世界上所有的* O'Malleys *,沒有Unicode旗幟,可能是東南亞的大部分地區。 – CD001

+0

爲什麼不讓用戶輸入任何內容,然後在提交時使用更直接的正則表達式驗證,如''〜\ A \ w +(?:[\' - ] \ w +)* \ z〜u''? –

回答

0

如果你想保持連字符,只需將它們添加到您的否定的字符集是這樣的:

$_POST['Surname'] = preg_replace("/[^ \w\-]+/", "", $_POST['Surname']); 
+0

擺脫連字符,如果它是班上第一個或最後一個字符是沒有必要的。 – mickmackusa