0

我正在努力理解如何完成以下任务“

从 :http://www.example.com/main/this_dir/page.html

我想要一个输出:这个目录

使用时$_SERVER['REQUEST_URI']我可以得到这个输出:

*/main/this_dir/*

我现在想把它去掉,去掉两个 / 之间的最后一个字符串,所以我最终得到

*this_dir*

然后我想把那个字符串变成

这个目录

这也有点复杂,因为该目录可以简单地称为 /this/ 而不是 /this_dir/,但它始终是一个或另一个,并且文本确实发生了变化,而我使用的单词只是一个示例。

如果有人对我如何完成这项任务有任何建议、意见或反馈,我们将不胜感激!我确实对如何从 request_uri 字符串中删除最后一个目录名称有一个模糊的想法,但我真的很想知道是否可以使用 PHP 以我所描述的方式转换字符串。

4

2 回答 2

1
$path = explode("/", dirname($_SERVER['REQUEST_URI']));
$directory = end($path);

这应该为您提供路径中的最后一个目录。

然后你可以这样做:

$dirParts = explode("_", $directory);
$dirName = implode(" ", array_map("ucfirst", $dirParts));

以用户友好的格式获取目录名称。

编辑:事实上,正如 RobMaster 所说,这可能更容易做到ucwords(str_replace("_", " ", $directory))

于 2013-01-18T11:05:21.990 回答
1

您可以使用basename函数来获取“this_dir”部分,因此只需执行以下操作即可:

$directoryName = ucwords(str_replace('_', ' ', basename($_SERVER['REQUEST_URI'])));

编辑

稍微复杂一些的示例适用于“/main/this_dir/something.php”等页面:

$directoryName = ucwords(str_replace('_', ' ', basename(substr($_SERVER['REQUEST_URI'], 0, strrpos($_SERVER['REQUEST_URI'], '/')))));

这只是在传递之前剥离最终“/”之后的任何内容,basename以确保它会像以前一样工作。请注意,这不适用于没有尾随“/”的 URL,例如“/main/this_dir”——在这种情况下,它将输出“Main”。

于 2013-01-18T10:56:04.557 回答