2013-12-16 33 views
-2

我想在strlen命令中添加2個數字。這裏是我的php代碼:在if語句中添加多個條件

$name = mysql_real_escape_string($_POST['dgt']); 
if(strlen($name) != "32") { 
print "This is not a name."; 
} else { 

它檢查是否長度是32.我想要它檢查長度是32或40.我該怎麼做?

+0

你不應該適用'mysql_real_escape_string()'除非在查詢中立即使用。 –

+0

爲什麼你使用報價大約32 ?? ...刪除報價 –

+3

順便說一句,長度爲32或40的名稱有什麼特別之處? –

回答

0

PHP: Logical Operators - Manual,要使用

  1. || (這種形式具有更高的優先級)
$a or $b Or TRUE if either $a or $b is TRUE. 
$a || $b Or TRUE if either $a or $b is TRUE. 

所以,你可以使用類似這樣

$len = strlen($name);   // just get the length once and then 
           // use it to compare however many times.... 
if (!($len == 32 or $len == 40)) 
1

在條件中使用and運算符「& &」,如下面的代碼。

if(strlen($name) != 32 && strlen($name) != 40)

如果你想它來檢查name長度爲32或者40,然後用or運算符 「||」像下面的代碼一樣。

if(strlen($name) == 32 || strlen($name) == 40)

user2910265好點的strlen()返回值賦值給一個變量,以便只有一個調用時,像這樣。

$length = strlen($name); 
if(!($length == 32 || $length == 40)) 
    print "this is not a name."; 
} else { 
+0

最重要的是,將strlen放在一個變量名中,以便它只被調用一次(而不是兩次)。口譯員不會很聰明地爲你做這件事。 – user2910265

+0

哦,我以爲你在談論第二個有條件的使用或。 OP的問題很混亂,因爲他說他的代碼正在檢查字符串是否長度爲32,當它實際檢查它是否不是32時,所以我在回答時感到困惑。 –

4

首先,不使用mysql_real_escape_string();舊的mysql_ API已棄用,因此請考慮切換爲PDOmysqli

其次,你應該考慮使用輸入過濾;可能根本不存在$_POST['dgt'],因此請使用filter_input()

第三,您應該使用數值與strlen()的輸出進行比較;儘管PHP將"32"視爲一個數字,但最好是明確的。

最後,如果一個名稱必須是32或40長,你可以簡單地添加條件:

$name = filter_input(INPUT_POST, 'dgt', FILTER_UNSAFE_RAW); 
if (empty($name) || (strlen($name) != 32 && strlen($name) != 40)) { 
    print "This is not a name."; 
} 

另外,使用in_array()

if (empty($name) || !in_array(strlen($name), array(32, 40))) { 
    print "This is not a name."; 
}