如何获取 PHP“$_SERVER['REQUEST_URI']”中变量的最后一个单词要求?

发布于 2024-09-10 04:31:52 字数 723 浏览 5 评论 0 原文

我正在使用 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 路由中的某些内容吗?

I'm using WAMP and the root folder of my page is: http://localhost/projects/bp/

In a Worpress application and I want to give unique id's to the body tag of every Page. So I did the following:

<?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 ?>">

When I clicked the Aboutpage the URL change to the following: http://localhost/projects/bp/about and $page showed the following value:projectsbpabout

What can I do so that $page just show the last word of the URL. In this case, about, I don't want the projectsbp part)?

Do I have to change something in the Wordpress routing?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

好久不见√ 2024-09-17 04:31:53

我会使用 PHP 的内置路径解析函数来做到这一点。

使用parse_url()截断查询,只获取路径部分:

$path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);

(parse_url用于解析完整的 URL,但应该可以正常工作。第二个参数自 PHP 5.1.2 起可用。)

然后使用 basename() 提取文件名:

$pagename = basename($path, ".php");  // Will remove `.php` suffix

其他想法

根据您网站的结构,此方法不一定会产生唯一的 ID。如果 about/bp/bc 中的子页面怎么办? (如果这在 Wordpress 中可行的话。)您将拥有两个具有相同 ID 的不同页面。在这种情况下,您可能希望使用完整路径作为标识符,将斜杠转换为下划线:

<body id="projects_bp_about">

同样根据自己的经验,如果页面的命名类似于页面上已有的元素,我建议使用类来避免 ID 冲突!

<body class="projects_bp_about">

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:

$path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);

(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:

$pagename = basename($path, ".php");  // Will remove `.php` suffix

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:

<body id="projects_bp_about">

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!

<body class="projects_bp_about">
寻梦旅人 2024-09-17 04:31:53

由于 / 是分隔符,因此首先创建一个包含所有松散部分的数组:
$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']));

愛放△進行李 2024-09-17 04:31:53

要仅获取最后一位,您可以使用

$page = array_pop(explode('/', $_SERVER['REQUEST_URI']));

“/”分解字符串并获取最后一块。

to get only the last bit you can use

$page = array_pop(explode('/', $_SERVER['REQUEST_URI']));

explode the string by '/' and get the last piece.

淡写薰衣草的香 2024-09-17 04:31:53

而不是使用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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文