PHP:从路径获取最后一个目录名称

PHP: Get last directory name from path

提问人:Code Lover 提问时间:1/12/2013 最后编辑:Till HelgeCode Lover 更新时间:3/12/2017 访问量:29676

问:

我正在编写一个函数来获取一些不同的数据库查询。现在一切进展顺利,但只需要从定义的路径中获取最后一个目录名称。

$qa_path=site_root('/learnphp/docs/');

我只想从上面的路径得到。在这里site_root只不过是那么我怎么能只得到呢?docs$_SERVER['DOCUMENT_ROOT']docs

谢谢

php 修剪

评论

3赞 ficuscr 1/12/2013
请参见:php.net/manual/en/function.basename.php
0赞 Code Lover 1/12/2013
谢谢,但该文件可能在同一目录中,也可能不在同一目录中。我的意思是只是问没有那么有经验。

答:

35赞 Till Helge 1/12/2013 #1

最简单的方法是使用,如您在此处看到的那样: http://php.net/basenamebasename($yourpath)

评论

0赞 Code Lover 1/12/2013
啊,这是我找到的最简单的解决方案。只是快速提问,如果会有 3 或 4 个子级别的方向,它还会得到最后一个目录名称吗?
0赞 Till Helge 1/12/2013
是的。始终是任何路径的姓氏部分。不管它有多深。它将返回最深的目录或文件名(如果存在)。
0赞 Code Lover 1/12/2013
这是完美的,你的答案值得被选中。多谢。
2赞 C0D3 1/12/2013 #2

尝试将字符串拆分为数组位置。然后获取最后一个位置。explode('/', '/learnphp/docs/')

这是更多信息: http://php.net/manual/en/function.explode.php

评论

0赞 crush 1/12/2013
不值得投反对票,因为它是一个有效的解决方案:只是不是最好的解决方案。
0赞 Mattt 1/12/2013
这是一个有效的答案。它不应该被否决,因为你认为可能有一个“更好”的方法。
0赞 C0D3 1/12/2013
谢谢。是的,basename 似乎是一种“更好”的方式,但这也应该有效:)
0赞 Oldskool 1/12/2013
详细说明反对票:这本身不是一个答案,这将返回一个数组对象,该对象必须使用其他逻辑进行处理,该逻辑未提供。也有类似的答案确实提供了这点逻辑。
0赞 C0D3 1/12/2013
如果您的数组称为 $result.$result[$count($result)-1];
1赞 wezzy 1/12/2013 #3

您可以使用以下简单代码段:

$qa_path=site_root('/learnphp/docs/');
$qa_path = explode("/", $qa_path);
$qa_path = $qa_path[count($qa_path) - 1];

评论

0赞 Code Lover 1/12/2013
这不会给出任何输出
0赞 wezzy 1/13/2013
你是对的,因为字符串末尾的“/”,请尝试使用 Till Helge Helwig 建议的 basename() 方法,这是一个更聪明的解决方案
1赞 outman 1/12/2013 #4
$qa_path=explode('/', '/learnphp/docs/');
echo $qa_path[2]; // output docs

评论

0赞 Code Lover 1/12/2013
但是,如果路径中有三个以上的目录怎么办。此数组将始终获取第二个数字目录。正确?
0赞 Code Lover 1/12/2013
因此,例如,如果其他人使用此功能,那么他们必须手动进行修改。这并不理想。我想要一些解决方案,它将自动获取最后一个目录
1赞 outman 1/12/2013
@wezzy说的一样 $qa_path = $qa_path[count($qa_path) - 1];
1赞 Ankit Agrawal 1/12/2013 #5

这将对你有所帮助

$qa_path=site_root('/learnphp/docs/');
$q_path = explode ("/", $qa_path);
$lastV =  end($q_path);
32赞 mattspain 11/6/2014 #6

如果字符串末尾包含文件,则提供的答案不起作用,例如:

basename('/home/mypath/test.zip');

test.zip

因此,如果你的字符串包含文件,请不要忘记先对其进行 dirname

basename(dirname('/home/mypath/test.zip'));

mypath
1赞 Pablo S G Pacheco 8/14/2015 #7

这将为您提供当前目录名称: echo basename(dirname(__FILE__));

6赞 Kapilnemo 3/12/2017 #8

这是最简单的方法:

<?php
  echo basename(getcwd());
?>

getcwd() = 提供完整的目录路径 basename() = 给你最后一个目录