检索并整理网址中的一个目录名称。 例如 我需要example.com/main/this_dir/page.html输出为“This Dir”

I am stuggling to comprehend how to accomplish the following task "

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

I would like an output of : This Dir

When using $_SERVER['REQUEST_URI'] i can get this output :

*/main/this_dir/*

I would like to now take that and strip the last string between the two /'s so i end up with

*this_dir*

I would then like to take that string and turn it into

This Dir

There is a slight complication with this too because the directory could simply be called /this/ and not /this_dir/, but it is always one or the other and the text does change whereas the words i used were merely an example.

If anyone has any suggestions, input or feedback as to how i could accomplish this task it would be greatly appreciated! I do have a vague idea of how i could strip the last directory name from the request_uri string but i would really like to know if it would even be possible to transform the string in the way that i have described, using PHP.

You can use the basename function to get the "this_dir" part, so then it's simply a case of doing something like this:

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

Edit

Slightly more convoluted example that will work for pages such as "/main/this_dir/something.php":

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

This is just stripping anything after the final "/" before passing to basename to ensure it'll work as before. Note that this will NOT work though for URLs without a trailing "/" such as "/main/this_dir" - in this case it would output "Main".

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

This should give you the last directory in the path.

Then you can do:

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

To get the directory name in a user-friendly format.

Edit: In fact, as RobMaster said, it is probably easier to do ucwords(str_replace("_", " ", $directory))