-1

当我在我的 PHP 代码中加入以下行时,我注意到一些奇怪的事情:

echo strpos($_SERVER['REQUEST_URI'], "/?s=");

如果输入以下 URL: https ://s1.temporary-access.com/~allacros/devel/?s=tahiti ,则回显语句返回“16”。这是预期的行为。

但是,如果输入以下 URL: http ://stage.world-of-waterfalls.com/?s=tahiti ,则回显语句返回“0”。

这是出乎意料的行为,它的后果是我似乎无法使用以下代码来抑制导致由搜索结果页面的简码引起的错误按钮工件的简码(我见过的唯一情况是我试图依靠这个)...

if( !( empty( strpos($_SERVER['REQUEST_URI'], "/?s=") ) ) )
    remove_shortcode('uwr-button');

有谁知道为什么会这样?以及如何修复代码,使其与其所在的服务器无关(假设这是问题所在)?

4

1 回答 1

0

根据文档,如果未找到针头,则strpos将返回。false所以你可以像这样重写你的条件:

if (strpos($_SERVER['REQUEST_URI'], "/?s=") !== false) {
    remove_shortcode('uwr-button');
}

此外,您可以检查数组s中的键是否存在:$_GET

if (array_key_exists('s', $_GET)) {
    remove_shortcode('uwr-button');
}

$_SERVER['REQUEST_URI']还有一点建议:尝试理解and之间的区别$_SERVER['QUERY_STRING'],因为您的陈述中似乎需要第二个

于 2018-12-30T21:42:21.813 回答