簡體   English   中英

PHP if / if else語句未按預期運行(可能很簡單)

[英]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轉換為布爾值,並且truefalse之間零的最佳匹配顯然是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM