我使用PHP驗證我的聯繫表,我用下面的代碼:過PHP字母和空格只驗證
if (ctype_alpha($name) === false) {
$errors[] = 'Name must only contain letters!';
}
此代碼工作正常,但它證明了,不允許空格。我試過ctype_alpha_s
,並提出了一個致命的錯誤。
任何幫助,將不勝感激
我使用PHP驗證我的聯繫表,我用下面的代碼:過PHP字母和空格只驗證
if (ctype_alpha($name) === false) {
$errors[] = 'Name must only contain letters!';
}
此代碼工作正常,但它證明了,不允許空格。我試過ctype_alpha_s
,並提出了一個致命的錯誤。
任何幫助,將不勝感激
正則表達式是矯枉過正而對於這樣一個簡單的任務會表現更差,可以考慮使用本地字符串函數:在運行阿爾法檢查前
if (ctype_alpha(str_replace(' ', '', $name)) === false) {
$errors[] = 'Name must contain letters and spaces only';
}
這將去掉空格。如果你想使用它你的目的
str_replace(array("\n", "\t", ' '), '', $name);
而ctype_alpha只爲字母[A-Za-z]
檢查,第一ü將不得不刪除:如果選項卡和新線是一個問題,你可以考慮用這個代替您的字符串中的空格,然後應用ctype_alpha。
但我會去preg_match檢查驗證。你可以做這樣的事情。
if (!preg_match ("/^[a-zA-Z\s]+$/",$name)) {
$errors[] = "Name must only contain letters!";
}
if (ctype_alpha(str_replace(' ', '', $name)) === false) {
$errors[] = 'Name must contain letters and spaces only';
}
歡迎來到Stack Overflow!儘管這段代碼可以解決這個問題,但[包括解釋](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)確實有助於提高帖子的質量。請記住,您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。 – JonasCz 2016-06-06 12:36:10
一爲UTF-8的世界,將匹配任何語言的空格和字母。
if (!preg_match('/^[\p{L} ]+$/u', $name)){
$errors[] = 'Name must contain letters and spaces only!';
}
說明:
爲在上述安東尼HATZOPOULOS評論指出這也將匹配像比約克Guðmundsdóttir名。
連字符和單引號/反引號怎麼樣?這些名稱也是有效的字符。 – Eric 2013-03-11 18:56:55
「John O'Reily」或「BjörkGuðmundsdóttir」或「A'ishah-Yunus」如何? – 2013-03-11 19:18:30