2014-12-05 200 views
2

我使用以下正則表達式來檢查名稱字段中的無效字符...檢測空白用正則表達式

if (!preg_match("/^[a-zA-Z ]*$/",$mystring)) 

有沒有一種方法,如果字符串使用正則表達式爲空白也檢測?或者我更喜歡使用PHP?

+1

http://stackoverflow.com/questions/1833999/regular-expression-to-match-an-empty-or-all-whitespace-string - 一般情況下,儘可能避免正則表達式。它運行緩慢,而且更重要的是,造成閱讀不清晰。你有沒有考慮strpos作爲你的其他正則表達式的替代? – 2014-12-05 00:23:15

回答

1

你可以做一個簡單的檢查沒有一個正則表達式:

if($string == "") //do something 

if(strlen($string) == 0) //do something 

if(strlen(trim($string)) == 0) //do something 
1

或者,

<?php 

    $str = "\r\n\t\0 "; 

    if (trim($str) == "") { 
     echo "This string is blank"; 
    } 

修剪任何空白字符(包括一個或多個空格)的字符串,然後將結果與空字符串進行比較將檢測到空白字符串。這裏的優點是你只需要使用一個功能,即修剪。

當然可以使用trim()和strlen()來實現相同的結果,但這需要兩個函數而不是一個函數。

使用的strlen(),而不修整輸入$ STR可能導致接受「空白」行,如下所示:

<?php 
$content = 'Content: '; 
$str = " \r\n\t\0 "; 

if (strlen($str) == 0) { 
     echo 'blank line',"\n"; 
} 
else 
{ 
    $content .= $str; 
} 
echo $content; 

通過在這種情況下不修整的任何空白字符的字符串的字符串長度是六個,但是一個明顯空白的$ str會被附加到$ content。