我想在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.我該怎麼做?
我想在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.我該怎麼做?
從PHP: Logical Operators - Manual,要使用
$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))
在條件中使用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 {
最重要的是,將strlen放在一個變量名中,以便它只被調用一次(而不是兩次)。口譯員不會很聰明地爲你做這件事。 – user2910265
哦,我以爲你在談論第二個有條件的使用或。 OP的問題很混亂,因爲他說他的代碼正在檢查字符串是否長度爲32,當它實際檢查它是否不是32時,所以我在回答時感到困惑。 –
首先,不使用mysql_real_escape_string()
;舊的mysql_
API已棄用,因此請考慮切換爲PDO或mysqli。
其次,你應該考慮使用輸入過濾;可能根本不存在$_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.";
}
你不應該適用'mysql_real_escape_string()'除非在查詢中立即使用。 –
爲什麼你使用報價大約32 ?? ...刪除報價 –
順便說一句,長度爲32或40的名稱有什麼特別之處? –