PHP-strstr()返回false,但是$ haystack包含$ needle

时间:2018-09-15 21:34:20

标签: php html string url strstr

这是一个非常奇怪的错误,我正在尝试修复未成功的问题。 我正在尝试检查链接是否包含字符串:

<img src="http://bglradio.net/sam/Web-Images/dancing-girl-6.gif" alt="Dancing Girl" width="160" height="250">

输出为:

$actual_link = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
echo $actual_link;

然后:

http://xxx.xxx.xxx.xxx/plesk-site-preview/***********.com/xxx.xxx.xxx.xxx/

问题在于,尽管if(strstr($actual_link,"plesk-site-preview") ){ echo"<meta name='robots' content='noindex'>"; } 中包含子字符串plesk-site-preview,strstr仍返回false。

如何解决此错误?

编辑:

出于测试目的,我在http://xxx.xxx.xxx.xxx/plesk-site-preview/***********.com/xxx.xxx.xxx.xxx/之前插入了以下行:

if(strstr($actual_link,"plesk-site-preview")  ){

现在代码可以正常工作了!似乎在IF语句之前丢失了在$ actual_link变量处分配的字符串。

2 个答案:

答案 0 :(得分:1)

documentaion

  

string strstr(字符串$ haystack,混合$ needle [,bool $ before_needle = FALSE])

     

从第一个(包括第一个)开始返回干草堆字符串的一部分   到干草堆尽头的针的发生。

     

返回字符串的一部分,如果找不到针,则返回FALSE。

然后您编码

if(strstr($actual_link,"plesk-site-preview")) 

也许应该是

if(strstr($actual_link,"plesk-site-preview") != "") 

,因为它返回一个字符串,如果成功则返回一个布尔值。

嗯,实际上

会更好
 if(strstr($actual_link,"plesk-site-preview") !== FALSE)

答案 1 :(得分:0)

如果您需要检查字符串中是否存在子字符串,则可以使用strpos,例如:

if(strpos($actual_link, "plesk-site-preview")){
    echo"<meta name='robots' content='noindex'>";
}

这样更好,因为strpos比strstr快