PHP | dirname 函数
怎样获取字符串路径中的目录部分
最近更新时间 2020-12-30 18:51:14
dirname 返回路径中的目录部分。
dirname() 函数是一个内置函数,用于返回给定路径的目录名称。可传入目录深度为 levels 级,默认为1级,返回值为字符串。
dirname() 纯粹基于输入字符串操作, 它不会受实际文件系统和类似 ".." 的路径格式影响。
函数定义
dirname(string $path [, int $levels = 1 ]):string
// 源文件位于:ext/standard/string.c
# 函数定义
PHP_FUNCTION(dirname)
{
...
ret = zend_string_init(str, str_len, 0);
if (levels == 1) {
/* Default case */
#ifdef PHP_WIN32
ZSTR_LEN(ret) = php_win32_ioutil_dirname(ZSTR_VAL(ret), str_len);
#else
ZSTR_LEN(ret) = zend_dirname(ZSTR_VAL(ret), str_len);
#endif
} else if (levels < 1) {
zend_argument_value_error(2, "must be greater than or equal to 1");
zend_string_efree(ret);
RETURN_THROWS();
} else {
/* Some levels up */
do {
#ifdef PHP_WIN32
ZSTR_LEN(ret) = php_win32_ioutil_dirname(ZSTR_VAL(ret), str_len = ZSTR_LEN(ret));
#else
ZSTR_LEN(ret) = zend_dirname(ZSTR_VAL(ret), str_len = ZSTR_LEN(ret));
#endif
} while (ZSTR_LEN(ret) < str_len && --levels);
}
RETURN_NEW_STR(ret);
}
参数
- checkpath - 字符串路径。在 Windows 中,斜线(/)和反斜线(\)都可以用作目录分隔符。在其它环境下是斜线(/)。
- checklevels - 上级目录的层级。整型,必须大于 0。
返回值
- checkstring - 返回 path 的父目录。 如果在 path 中没有斜线,则返回一个点('.'),表示当前目录。否则返回的是把 path 中结尾的 /component(最后一个斜线以及后面部分)去掉之后的字符串。
示例1: - 使用 dirname() 函数获取路径中的目录部分。
<?php
/**
* PHP 使用 dirname() 函数获取路径中的目录部分。
*
* @since Version 1.0.0
* @filesource
*/
// 显示目录部分
echo dirname("/etc/passwd") . PHP_EOL;
echo dirname("/etc/") . PHP_EOL;
echo dirname("passwd") . PHP_EOL;
echo dirname("/usr/sbin/sysctl") . PHP_EOL;
// 获取当前脚本文件的目录
echo dirname(__FILE__) . PHP_EOL;
/etc / . /usr/sbin /data/wwwroot/docs