如何获取 PHP“$_SERVER['REQUEST_URI']”中变量的最后一个单词要求?
我正在使用 WAMP,页面的根文件夹是:http://localhost/projects/bp/
在 Worpress 应用程序中,我想为 body
提供唯一的 id每个页面的 code> 标签。因此,我执行了以下操作:
<?php
$page = $_SERVER['REQUEST_URI'];
$page = str_replace("/","",$page);
$page = str_replace(".php","",$page);
$page = str_replace("?s=","",$page);
$page = $page ? $page : 'default'
?>
<body id="<?php echo $page ?>">
当我单击 About
页面时,URL 更改为以下内容:http://localhost/projects/bp/about
和 $page
显示以下值:projectsbpabout
我该怎么做才能使 $page 只显示 URL 的最后一个单词。在本例中,about
,我不需要 projectsbp
部分)?
我需要更改 WordPress 路由中的某些内容吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我会使用 PHP 的内置路径解析函数来做到这一点。
使用parse_url()截断查询,只获取路径部分:
(parse_url用于解析完整的 URL,但应该可以正常工作。第二个参数自 PHP 5.1.2 起可用。)
然后使用 basename() 提取文件名:
其他想法
根据您网站的结构,此方法不一定会产生唯一的 ID。如果
about
是/bp
和/bc
中的子页面怎么办? (如果这在 Wordpress 中可行的话。)您将拥有两个具有相同 ID 的不同页面。在这种情况下,您可能希望使用完整路径作为标识符,将斜杠转换为下划线:同样根据自己的经验,如果页面的命名类似于页面上已有的元素,我建议使用类来避免 ID 冲突!
I would use PHP's built-in path parsing functions to do this.
Use parse_url() to cut off the query and get only the path part:
(parse_url is used to parse full URLs but should work fine for this. The second parameter is available since PHP 5.1.2.)
Then use basename() to extract the file name:
Additional thougths
Depending on how your site is structured, this method will not necessarily make for unique IDs. What if
about
is a sub-page in/bp
and/bc
? (If that is possible in Wordpress.) You would have two different pages with the same ID. In that case, you may want to use the full path as an identifier, converting slashes into underlines:also from own experience, I recommend using classes for this to avoid ID collisions if a page is named like an already existing elements on the page!
由于
/
是分隔符,因此首先创建一个包含所有松散部分的数组:$parts =explode('/', $_SERVER['REQUEST_URI']);
现在你只需要最后一个元素:
$last_part = end($parts);
当然,这也可以一次性完成:
$last_part = end(explode('/', $_SERVER['REQUEST_URI']));
As
/
is your separator, first create an array of all the loose parts:$parts = explode('/', $_SERVER['REQUEST_URI']);
Now you just want the last element:
$last_part = end($parts);
of course this can also be done in one go:
$last_part = end(explode('/', $_SERVER['REQUEST_URI']));
要仅获取最后一位,您可以使用
“/”分解字符串并获取最后一块。
to get only the last bit you can use
explode the string by '/' and get the last piece.
而不是使用str_replace
您可以使用.. $pageArr =explode("/",$page);
它会给你一个包含三个值的数组,你可以捕获最后一个值
instead of using str_replace you can use..
$pageArr = explode("/",$page);
it will give you array with three values you can capture the last one as about