如何从字符串中的路径获取最后一个目录

时间:2011-01-19 09:57:12

标签: php

我正在尝试从存储在字符串中的路径中获取最后一个文件夹名称。

例如: Home/new_folder/test

result = test

11 个答案:

答案 0 :(得分:99)

使用basename

basename('Home/new_folder/test');
// output: test

作为回答爆炸的人的旁注:

要获取路径的尾随名称组件,您应该使用 basename ! 如果您的路径类似于$str = "this/is/something/",则end(explode($str));组合将失败。

答案 1 :(得分:17)

您可以使用basename()功能:

$last = basename("Home/new_folder/test");

答案 2 :(得分:8)

您可以使用pathinfo - pathinfo

$pathinfo = pathinfo('dir/path', PATHINFO_DIRNAME);
$pathinfo = array_filter( explode('/', $pathinfo) );

$result = array_pop($pathinfo);

这也将确保尾部斜杠并不意味着返回空白字符串。

答案 3 :(得分:4)

我知道这是一个老问题,但这会自动获取最后一个文件夹而不会混淆列表中的最后一项 - 可能是脚本 - 而不是实际的最后一个文件夹。

$url = pathinfo($_SERVER['SCRIPT_NAME'], PATHINFO_DIRNAME);
$url_var = explode('/' , $url);
$last_folder = end($url_var);

答案 4 :(得分:3)

爆炸将字符串转换为数组,然后您可以选择该数组中的最后一个值作为结果。

$result = end((explode('/', $path)));

答案 5 :(得分:1)

$directory = 'Home/new_folder/test';
$path = explode('/',$directory);
$lastDir = array_pop($path);

答案 6 :(得分:1)

<?php
$path = explode('/', $yourPathVar);
// array_pop gives you the last element of an array()
$last = array_pop($path);
?>

答案 7 :(得分:1)

所以,你想要一些大部分时间都可以工作的动态 - 可能是一个可重复使用的函数。

通过$ _SERVER数据从请求中的网络服务器提供的数据中获取URI:$ _SERVER('REQUEST_URI')

从该URI获取路径:parse_url($ _ SERVER ['REQUEST_URI'],PHP_URL_PATH))

从完整的URI中提取路径后,

basename()是获取最后一个目录的正确工具:basename(parse_url($ _ SERVER ['REQUEST_URI'],PHP_URL_PATH))

function lastPathDir() {
    // get a URI, parse the path from it, get the last directory, & spit it out 
    return basename(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH));
}

答案 8 :(得分:1)

尝试一下

echo basename(dirname(__FILE__));

或这个

echo basename(dirname(__DIR__));

答案 9 :(得分:1)

您可以

$baseUrl=basename('/path/to/site');
echo $baseUrl;

如果您的网址末尾有'/',则可以执行以下操作:

$url_to_array = parse_url('/path/to/site/');
$baseUrl = basename($url_to_array['path']);
echo $baseUrl;`

答案 10 :(得分:0)

This works on windows environtment too, and also works if the path given ends with a slash.

function path_lastdir($p) {
    $p=str_replace('\\','/',trim($p));
    if (substr($p,-1)=='/') $p=substr($p,0,-1);
    $a=explode('/', $p);
    return array_pop($a);
}
相关问题