2013-12-17 18 views
2

我正在嘗試RegEx人的姓名。我想,何塞岡薩雷斯是非常困難的。 我發現下面的代碼,不工作如何正義名稱像何塞岡薩雷斯?

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

我試圖改變

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

preg_match("/^[[:alpha:]\`\´-\s]+$/", $input); 

preg_match("/^[[:alpha:][:punct:]\`\´-\s]+$/", $input); 

沒有成功。唯一匹配的字符是「喬斯」

+2

'preg_match'不是SQL語句。這與SQL有什麼關係?這是一個PHP問題? –

+0

這應該是sql插入前的安全檢查 – Viktor

+1

檢查此解決方案的類似問題:http://stackoverflow.com/a/20452112/231388 – Yousf

回答

2

可眼前這個正則表達式來該名稱相匹配:

"#[\p{L} ]+#u" 
  • u標誌是在正則表達式使用Unicode字符
  • \p{L}是匹配任何單詞字符unicode
+0

非常感謝! – Viktor

+0

不客氣,很高興它解決了。 – anubhava