2013-12-19 49 views
2

我設置了一個自定義的php表單驗證,與wordpress聯繫表單7插件一起使用,我設置了一個驗證規則作爲文本字段,我只希望人們輸入1字(即沒有空格)並且以字母s開頭的那個單詞。
字母s驗證工作得很好,但這雖然有效,但沒有空格(一個字)驗證似乎沒有工作?
PHP:php驗證:字符串中沒有空格

if($name == 'FirstField') { 
     $FirstField = $_POST['FirstField']; 

     if($FirstField != '') { 
      if (!preg_match("/(^[^s]|\s)/i",$FirstField)){ 
       $result['valid'] = true; 
      } else { 
       $result['valid'] = false; 
       $result['reason'][$name] = 'Invalid Entry.'; 
      } 
     } 
    } 

任何建議,將不勝感激!

+0

當我測試了[R egex它似乎做你想做的。你能給出一個沒有給出預期結果的值的例子嗎? – luttkens

+0

作爲一個方面說明,你可以隨時在這裏測試你的正則表達式... http://rubular.com/r/CnxN4oJub2 – Charlie74

回答

2

測試:

如果($名稱== 'FirstField'){$ = FirstField $ _POST [ 'FirstField'];

if($FirstField != '') { 
     if (!preg_match("/(^[^s]|\+s)/i",$FirstField)){ 
      $result['valid'] = true; 
     } else { 
      $result['valid'] = false; 
      $result['reason'][$name] = 'Invalid Entry.'; 
     } 
    } 
} 

更新:

if($name == 'FirstField') { $FirstField = $_POST['FirstField']; 

    if($FirstField != '' && isset($FirstField)) { 
     $FirstField = explode(' ', $FirstField); //Get only first word 
     if (!preg_match("/(^[^s]|\+s)/i",$FirstField[0])){ 
      $result['valid'] = true; 
     } else { 
      $result['valid'] = false; 
      $result['reason'][$name] = 'Invalid Entry.'; 
     } 
    } 
} 

固定誤差最後:

取代:

如果($ FirstField = '' & & isset($ FirstField)

由:

如果($ FirstField = '!' & & isset($ FirstField))

我希望能幫到你。

+0

感謝您的建議,但似乎仍然沒有工作。驗證工作正常,雖然沒有空格,但仍然不是:( – user1374796

+0

再次測試;-) –

+0

仍然沒有運氣,那裏也有一個語法錯誤,缺少一個右括號;)感謝您的幫助雖然...只是仍然沒有運氣:( – user1374796

0

我認爲這應該工作:

preg_match("/^s[a-z]*$/i", $FirstField) 

假設你的話只包含字母。

0

用 'S'(不區分大小寫)開始,沒有空格:preg_match('/^s[^ ]*$/i', $string)

與開始的'(不區分大小寫),無空白(空格,製表符,等):preg_match('/^s\S*$/i', $string)

編輯

您可能也有興趣\w,它匹配 「單詞字符」(包括AZ,az,0-9,_):preg_match('/^s\w*$/i', $string)