2014-04-03 43 views
1
(!ctype_alpha($director)) 

我正在嘗試使用ctype_alpha()函數。如何檢查變量是否包含字母字符但允許空格?

EG

if(!ctype_alpha($variable)) { 
    The value entered contains other characters. 
} 

這種方法的問題是,它不會允許用空格的字符串。我如何確保用戶只輸入字母,但允許空格(即名稱)?

+0

您可以嘗試使用此方法'ctype_space' – lighter

回答

0

嘗試以下操作:

preg_match('/[a-zA-Z ]+/', $variable, $matches); 
print_r($matches); 

其實,

function alphaSpace($string){ 
    return preg_match('/[a-zA-Z ]+/', $string) ? 1 : 0; 
} 
echo alphaSpace($someString) ? "It's a match!" : "It's not a match."; 

,只會告訴你,如果有一個匹配。當然,$someString將是您選擇的字符串。

+0

這不處理非英文字符集。 –

+0

對不起,我以爲你已經使用'preg_match()'。 – PHPglue

0

它會很慢,但對於小輸入流不是問題,您可以一次循環一個字符的字符串,然後檢查!ctype_alpha($ c)& &! ctype_space($ c)。

2

這很大程度上取決於你所說的字母,比如:a-z? a-záéçç?對於第一個,你應該使用:

if (preg_match("/^[a-zA-Z ]*$/",$variable)) { 
} 

對於第二個:

if (preg_match("/^[[:alpha:] ]*$/",$variable)) { 
} 

對於你應該檢查PHP's PCRE manual page更多的選擇。

+1

使用'*'不包含任何內容。我們還應該詢問'@Annon Omus'是否包含「,在他的問題中是正確的詞,因爲使用開頭'^'和關閉'$'將意味着開始和結束於。 – PHPglue

+0

你說得對,雖然你說的方式有點混亂。事情是:當前模式讓空字符串通過; @Anon Omus需要將「*」改爲「+」,如果他或她需要排除空字符串的話。我故意把這個放在我的例子之外,因爲它會給答案增加一些複雜性。你可以繼續挖掘:如果雙空間失敗?以空格開頭/結尾的字符串是否會失敗? –

0

您可以像我的代碼一樣使用function。在輸入if else條件之前,我使用str_replace刪除空格。因此,如果variable包含字母字符,它將返回TRUE

function check_string($var){ 

    $var = str_replace(' ', '', $var); 

    if(ctype_alpha($var)){ 
     $result = TRUE; 
    } 
    else{ 
     $result = FALSE; 
    } 

    return $result; 
    } 

EG

if(check_string($var)) { 
    TRUE IF VARIABLE CONTAINS ALPHABETIC CHARACTERS 
} 
相關問題