首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP ()返回false,但$haystack包含$needle。

PHP ()返回false,但$haystack包含$needle。
EN

Stack Overflow用户
提问于 2018-09-15 21:34:19
回答 2查看 667关注 0票数 0

这是一个非常奇怪的错误,我正试图修复它,但没有成功。我试图检查一个链接是否包含一个字符串:

代码语言:javascript
复制
$actual_link = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
echo $actual_link;

产出如下:

代码语言:javascript
复制
http://xxx.xxx.xxx.xxx/plesk-site-preview/***********.com/xxx.xxx.xxx.xxx/

然后:

代码语言:javascript
复制
if(strstr($actual_link,"plesk-site-preview")  ){
echo"<meta name='robots' content='noindex'>";
}

问题是strstr返回false,尽管子字符串plesk-site-preview包含在http://xxx.xxx.xxx.xxx/plesk-site-preview/***********.com/xxx.xxx.xxx.xxx/中。

如何纠正此错误?

编辑:

为了测试目的,我在if(strstr($actual_link,"plesk-site-preview") ){之前插入了以下一行:

代码语言:javascript
复制
$actual_link='http://xxx.xxx.xxx.xxx/plesk-site-preview/***********.com/xxx.xxx.xxx.xxx/';

现在密码起作用了!在变量$actual_link处分配的字符串似乎在IF语句之前丢失了。

EN

回答 2

Stack Overflow用户

发布于 2018-09-15 21:40:36

文献资料

string strstr ( string $haystack,混合型$needle,bool $before_needle = FALSE ) 返回部分干草堆字符串,从和包括第一次出现的针头到干草堆的末尾。 返回字符串的部分,如果找不到针,则返回FALSE。

而你的代码

代码语言:javascript
复制
if(strstr($actual_link,"plesk-site-preview")) 

也许它应该是

代码语言:javascript
复制
if(strstr($actual_link,"plesk-site-preview") != "") 

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

嗯,实际上最好是

代码语言:javascript
复制
 if(strstr($actual_link,"plesk-site-preview") !== FALSE)
票数 1
EN

Stack Overflow用户

发布于 2018-09-15 21:45:50

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

代码语言:javascript
复制
if(strpos($actual_link, "plesk-site-preview")){
    echo"<meta name='robots' content='noindex'>";
}

这种方式更好,因为strpos比strstr更快。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52349059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档