好的,我正在尝试做一个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();
}
更新:仍然无法解决为什么这不起作用?我甚至复制并粘贴了此页面中的代码,但仍然无效。
答案 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";
}