PHP-如何基于URL中的特殊字符显示消息

PHP-如何基于URL中的特殊字符显示消息,php,Php,在我的网站(thirdsidethreads.com)上,我想在索引页上显示一条“欢迎”消息,但我不想在人们使用URL中的某些参数访问索引页时显示它。如果URL是普通的,并且只包含域,则表示它作为主页运行。如果URL中有其他字符,则表示访问者试图使用该页面查看特定内容,而不是主页 换句话说,我想要这个: 如果URL中除了域名之外没有其他内容,则显示消息 如果URL看起来像这样,请不要显示它: 如果有人能给我一个解决办法,我将不胜感激。我觉得我已经尝试了所有的方法。您应该从开始并传入页面的当前UR

在我的网站(thirdsidethreads.com)上,我想在索引页上显示一条“欢迎”消息,但我不想在人们使用URL中的某些参数访问索引页时显示它。如果URL是普通的,并且只包含域,则表示它作为主页运行。如果URL中有其他字符,则表示访问者试图使用该页面查看特定内容,而不是主页

换句话说,我想要这个:

如果URL中除了域名之外没有其他内容,则显示消息

如果URL看起来像这样,请不要显示它:

如果有人能给我一个解决办法,我将不胜感激。我觉得我已经尝试了所有的方法。

您应该从开始并传入页面的当前URL

您将对输出的三个部分感兴趣;
路径
查询
片段
。如果您的URL是
example.com/
,则路径可以是斜杠,因此也可以忽略该路径,并执行如下操作:

$showMessage = ((empty($bits['path']) || $bits['path'] === '/') && empty($bits['query']) && empty($bits['fragment']));
我还补充了一些断言。请随意扩展测试,看看它是否真的适合您的用例

要专门针对URL的片段,可以使用
PHP\u URL\u片段
常量作为参数:

$fragment = parse_url($url, PHP_URL_FRAGMENT); // !1007747370?q=I1007747370 in your example

因为用PHP检索URL的哈希标记部分似乎是不可能的,所以我选择了JavaScript解决方案。它很好用

<script>
function message() {

if (window.location.hash=="") {

    document.getElementById('welcome').style.display="block";

} else {

    document.getElementById('welcome').style.display="none";

}

}

window.onload=message;
</script>

函数消息(){
if(window.location.hash==“”){
document.getElementById('welcome').style.display=“block”;
}否则{
document.getElementById('welcome').style.display=“无”;
}
}
window.onload=消息;

请告诉我们您尝试了什么以及具体出了什么问题。您可以使用全局变量$\u GET。我将尝试创建一些代码,并在晚餐结束后发布。我尝试使用$\u GET,但由于某些原因它无法工作。我还尝试了一些基本的PHP函数来回显URL,但它们永远不会超过文件名。如果我能在URL中检测到我应该是好的,那么我需要使用的URL部分从“/#!”开始。有没有办法只检测URL中的“#!”并仅在URL不包含它时显示消息?@MattDeLaRoche是的,您可以使用该方法返回的
片段
组件。您还可以通过
$fragment=parse\u url($url,PHP\u url\u fragment)
专门针对它。它将包含锚中除锚本身之外的所有内容。问题是,我不知道如何首先检索完整的URL。我所能做的只是检索域名和文件名,其他什么都没有,所以我不知道如何获取$url变量。你可以,但你可以创建一个CSS样式的警报来隐藏它,并使用Javascript读取url中的值,并在必要时显示警报。我尝试了这个方法,但没有成功。我不知道该怎么办$url=“window.location;”$fragment=parse_url($url,PHP_url_fragment);回声片段;