在PHP中这样做更好


Better way to do this in PHP

我现在有一个htaccess文件设置来删除文件类型,所以

www.example.com/home.php

将成为,

www.example.com/home

我需要将url与我保存在数据库中的url进行比较,我通过

if ($_SERVER['QUERY_STRING']) {
    $pageURL = str_replace('.php', '?', 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['PHP_SELF'] . $_SERVER['QUERY_STRING']);
}
else {
    $pageURL = substr('http://' . $_SERVER['SERVER_NAME'] . $_SERVER['PHP_SELF'], 0, -4);
}

当我在数据库中保存url时,它在htaccess文件删除.php后被保存为当前页面url,它是使用jquery ajax插入的。

当我要比较它时,我需要这个使它在php中匹配,因为php不考虑htaccess的变化。

有更好的方法吗?

你可以这样做:

$pageURL = rtrim($_SERVER['REQUEST_URI'], '.php');

这将给你的url与.php删除,每当它出现在url的末尾。

查看parse_url()函数。你可以用它把URL解析成几个部分,然后修改路径组件(比如删除。php)。然后您可以使用http_build_url()函数从这些部分重新构建URL。

在我看来,结合John上面的建议,使用parse_url()和使用pathinfo()将是最好的——用substr进行修剪、截断等并不总是像pathinfo()那样优雅。