2015-11-11 24 views
-1

我是PHP新手。我的問題是我需要輸入來驗證最少20個字符的輸入並返回最後九個輸入。有人可以告訴我,我的論點是否接近工作,如果不是,我需要做什麼?可以用這個strlen參數來驗證嗎?

if (!empty($_POST['usen']) || 
    strlen($usen['usen'] >= 20)) { 
    $switch = substr($usen, -9, 9); // returns last nine of sentence 
    $output_form=false; 
} else { 
    $error_text .="<p><span class='error'>*<strong>A Sentence of 20 char is required .</strong></span></p>"; 
    $output_form=true; 
} 
+3

那麼,*是*它的工作?如果不是,有什麼問題?請嘗試縮小這個問題,並解釋你需要幫助。 –

+0

另外,這裏有一個提示:它非常不可能檢查'empty($ _ POST ['usen'])'然後嘗試使用'$ usen ['usen']'和$ $ usen'。很確定那些應該是'$ _POST ['usen']',以及。 –

+0

它沒有正確的工作方式,如果我輸入少於20個字符它輸出(應該拋出一個錯誤),如果我輸入20個或更多的字符,它應該輸出。 substr的工作原理應該是當我少於20個字符時,我無法讓它拋出錯誤信息 –

回答

0

您有幾個語法問題和變量命名問題。您的代碼是:

if (!empty($_POST['usen']) && // || should be &&; the || doesn't make sense here 
    strlen($_POST['usen']) >= 20) { // You had $usen['usen'] and an incorrectly placed) 
    $switch = substr($_POST['usen'], -9); // again, this should be $_POST['usen'], not $usen. The third parameter is unnecessary here. 
    $output_form = false; 
} else { 
    $error_text .= "<p><span class='error'>*<strong>A Sentence of 20 char is required .</strong></span></p>"; 
    $output_form = true; 
} 

要點:

  • 您使用了錯誤的布爾運算符。 !empty($x) || strlen($x) >= 20沒有意義。它應該是&&,而不是||。如果您對$_POST['usen']有非空值,則!empty($_POST['usen'])true。但是因爲在if條件中有||,這意味着if塊始終爲非空值執行,而不是else塊。如果值非空,則只需要執行if至少20個字符。
  • 您的變量是$_POST['usen'],但您的代碼是指$usen['usen']$usen,這是不正確的。
  • 你有strlen($usen['usen'] >= 20)你應該有strlen($_POST['usen']) >= 20。變量名稱和)展示位置都不正確。
+0

嗨,Ed做了推薦的修改,如果我離開輸入,我仍然只能得到錯誤信息字段爲空並提交,則錯誤信息起作用,如果我輸入的字符少於20個字符,則不會收到錯誤信息和數據輸出。 –

+0

@BillyPayne看我的編輯;我錯過了另一個錯誤,即不正確的布爾運算符。如果你有'$ _POST ['usen']'的非空值,那麼'!empty($ _ POST ['usen'])'爲'true'。因爲在if條件中有'||',這意味着'if'塊總是爲非空值執行,而不是'else'塊。 –

+0

這是正確的,感謝您的專業知識,我從這一個錯誤中學到了很多東西,永遠不會忘記它,再次感謝! –

0

要獲得$ USEN [ 'USEN']最後9個字符使用

$switch = substr($usen, -9); 
0
if (!empty($_POST['usen']) || 
    strlen($_POST['usen']) >= 20) { // changed condition 
$switch = substr($usen, -9, 9); // returns last nine of sentence 
$output_form=false; 

} else { 
$error_text .="<p><span class='error'>*<strong>A Sentence of 20 char is required .</strong></span></p>"; 
$output_form=true; 
} 

的,如果條件在第二部分

  1. 您使用的兩個問題$usen['usen']但我認爲它應該是$_POST['usen'](也見@Ed Cottrell評論)
  2. 來自方法調用strlen的閉合括號必須在參數後面
0
if (!empty($_POST['usen']) && 
    strlen($_POST['usen'])>= 20) { //condition change 
    $switch = substr($_POST['usen'] ,-9); // returns last nine of sentence 
    $output_form=false; 
} else { 
    $error_text .="<p><span class='error'>*<strong>A Sentence of 20 char is required .</strong></span></p>"; 
    $output_form=true; 
} 

爲了得到最後的9個charcters,您可以使用SUBSTR(字符串,-9);

+0

這是工作答案,&&而不是||讓它工作,感謝所有人的幫助! –

相關問題