我已创建了一个功能,因此我可以显示网址的特定部分:
function PageName() {
return substr($_SERVER["REQUEST_URI"],strrpos($_SERVER["SCRIPT_NAME"],"/")+10,strrpos($_SERVER["SCRIPT_NAME"],"/")-4);
}
如果网址为domain.com/my-pages/The+Title/go/
,我可以显示 The + Title如果标题是一个单词,它的效果很好,但在上面的例子中,它是带有+号的两个单词。
我尝试在末尾添加 str_replace(“+”,“”,PageName),用空格替换加号,但似乎不起作用:
function PageName() {
return substr($_SERVER["REQUEST_URI"],strrpos($_SERVER["SCRIPT_NAME"],"/")+10,strrpos($_SERVER["SCRIPT_NAME"],"/")-4,str_replace("+"," ",PageName));
}
有什么想法吗?
答案 0 :(得分:3)
要解码+
,最好使用urldecode
,因为这就是您正在做的事情:解码网址格式。
此外,表达式中的+10
使您的解决方案不能重复使用。也许您知道该标题位于URL中的哪个位置(计算正斜杠)。在这种情况下,这可能更有用作为解决方案:
// $_SERVER["REQUEST_URI"] = "domain.com/my-pages/The+Title/go/";
function pageName($url) {
return urldecode(explode("/", $url)[2]); // adapt the 2 to what you need.
}
echo pageName($_SERVER["REQUEST_URI"]);