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