[英]PHP if / if else statement not working as expected (Probably Simple)
好的,我正在嘗試執行一個IF / else IF語句,該語句不符合我的預期。 我正在嘗試檢查某人為某些事情輸入的URL地址。 我做這件事的方式可能是胡扯,但我並不擅長編程。
如果(strpos($ URLcheck,“ http://”)== false),則除此位外,所有IF部分都起作用。
應該檢查URL中是否包含http://。 但是無論是否執行,其行為都完全相同。
我什至嘗試通過剝離http://或https://來強制將http://插入URL。
當我回顯變量($ URLcheck)時,它顯示帶有http:// .....的URL,所以我的代碼為什么不起作用? 謝謝
$URL = htmlspecialchars($_POST["URL"]);
$URLREMOVESarray = array('https//:', 'http//:');
$URLhttp = str_replace($URLREMOVESarray, "", $URL);
$URLcheck = "http://" . $URLhttp;
$URLsearchcheck2 = 'property-profile/';
$URLsearchcheckDomain = "domain";
if (strpos($URL, $URLsearchcheck2) !== false) {
echo "Test 1";
}
else if (strpos($URLcheck, "http://") == false) {
echo "Test 2";
echo $URLcheck;
}
else if (strpos($URLcheck, $URLsearchcheckDomain) == false) {
echo "Test 3";
}
else if (strpos($URLcheck, $URLsearchcheckDomain) == true) {
Continue1();
}
更新:仍然沒有解決方案,為什么它不起作用? 我什至從該頁面復制並粘貼了代碼,但仍然無法正常工作。
使用相同的!== false
語句:
$URLcheck = 'http://www.google.com';
if (strpos($URLcheck, "http://") !== false) {
echo "Test 2";
echo $URLcheck;
}
strpos($URLcheck, "http://")
在$URLcheck
字符串中搜索“ http://”並返回其位置(如果找到)。 就您而言,它確實位於位置0($ URLcheck字符串的開頭)。
如果strpos()
找不到要查找的內容,它將返回false
,它與0不同,即使在PHP中有時看起來也是如此。 這是許多經驗不足的php開發人員感到困惑的根源,我建議至少看看http://php.net/manual/zh/types.comparisons.php
無論如何,在您的情況下,然后會檢查strpos
返回的0
是否等於 false
(使用==
)。 但是由於0
是整數類型,而false
是布爾類型,PHP必須將0
轉換為布爾值,並且true
和false
之間零的最佳匹配顯然是false
。 這就是為什么您的if
語句的行為相同,實際上是完全正確的行為。
所以,你需要做的是檢查你是否strpos()
的輸出是相同的false
,而不是它是否等於它。 您只需在條件中添加另一個=
即可完成操作,因此它將讀取strpos($URLcheck, "http://") == false
。
好的,我從建議中嘗試了所有無效的方法,因此我繼續使用此代碼,它可以正常工作。 不知道為什么其他代碼不起作用
$pos = strpos($URLhttp, 'example.com');
if ($pos === false) {
echo "Test 1";
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.