PHP if / if else语句没有按预期工作(可能很简单)

时间:2016-07-11 11:16:33

标签: php if-statement

好的,我正在尝试做一个IF / else IF语句,它不会像我期望的那样发挥作用。 我试图检查某人为某些事情输入的URL地址。 我这样做的方式可能就是垃圾,但我不擅长编程。

如果(strpos($ URLcheck,“http://”)== false)

所有IF部分除此位外都有效

应检查URL中是否包含http://。但是它是否存在仍然完全相同。

我甚至尝试通过剥离http://或https://来强制http://进入URL。

当我回显变量($ URLcheck)时,它显示带有http://.....so的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();
   }

更新:仍然无法解决为什么这不起作用?我甚至复制并粘贴了此页面中的代码,但仍然无效。

3 个答案:

答案 0 :(得分:3)

使用相同的!== false声明:

$URLcheck = 'http://www.google.com';
if (strpos($URLcheck, "http://") !== false) {
   echo "Test 2";
   echo $URLcheck;
}

答案 1 :(得分:2)

strpos($URLcheck, "http://")$URLcheck字符串中搜索“http://”,如果找到则返回其位置。在你的情况下,它确实位于位置0($ URLcheck字符串的开头)。

如果strpos()找不到它要查找的内容,它会返回false,这与0不同,即使它在PHP中有时也是如此。对于许多经验不足的php开发者来说,这是一个混乱的根源,我建议至少看看http://php.net/manual/en/types.comparisons.php

无论如何,在您的情况下,0返回的strpos会被检查等于 false==)。但由于0是一个整数类型而false是一个布尔类型,PHP必须将0转换为布尔值,并且true和{{1}之间的最佳匹配为零显然是false。这就是为什么你的false语句表现得像它一样,它实际上是完全正确的行为。

所以你需要做的是检查你的if输出相同strpos(),而不是它是否等于它。您只需在条件中添加另一个false即可,因此会显示=

答案 2 :(得分:0)

好吧,没有什么工作,我尝试从建议,所以我使用此代码,它的工作原理。不知道为什么其他代码不起作用

    $pos = strpos($URLhttp, 'example.com');

    if ($pos === false) {
    echo "Test 1";
    }