PHP | pathinfo 函數
怎樣獲取文件路徑信息
最近更新時間 2021-01-19 15:58:19
pathinfo 函數獲取文件路徑信息。
pathinfo() 函數包含兩個參數,第一個參數為路徑,第二個為可選參數決定返回數組中的內容。
函數定義
pathinfo ( string $path , int $options = PATHINFO_DIRNAME | PATHINFO_BASENAME | PATHINFO_EXTENSION | PATHINFO_FILENAME ) : mixed
// 源文件位於:ext/standard/string.c
# 函數定義
PHP_FUNCTION(pathinfo)
{
...
if ((opt & PHP_PATHINFO_DIRNAME) == PHP_PATHINFO_DIRNAME) {
dirname = estrndup(path, path_len);
php_dirname(dirname, path_len);
if (*dirname) {
add_assoc_string(&tmp, "dirname", dirname);
}
efree(dirname);
}
if (have_basename) {
ret = php_basename(path, path_len, NULL, 0);
add_assoc_str(&tmp, "basename", zend_string_copy(ret));
}
if ((opt & PHP_PATHINFO_EXTENSION) == PHP_PATHINFO_EXTENSION) {
const char *p;
ptrdiff_t idx;
if (!have_basename) {
ret = php_basename(path, path_len, NULL, 0);
}
p = zend_memrchr(ZSTR_VAL(ret), '.', ZSTR_LEN(ret));
if (p) {
idx = p - ZSTR_VAL(ret);
add_assoc_stringl(&tmp, "extension", ZSTR_VAL(ret) + idx + 1, ZSTR_LEN(ret) - idx - 1);
}
}
...
if (opt == PHP_PATHINFO_ALL) {
ZVAL_COPY_VALUE(return_value, &tmp);
} else {
zval *element;
if ((element = zend_hash_get_current_data(Z_ARRVAL(tmp))) != NULL) {
ZVAL_COPY_DEREF(return_value, element);
} else {
ZVAL_EMPTY_STRING(return_value);
}
zval_ptr_dtor(&tmp);
}
}
參數
- checkpath - 要解析的路徑。
- checkoptions - 如果指定了,將會返回指定元素,包括:PATHINFO_DIRNAME,PATHINFO_BASENAME 和 PATHINFO_EXTENSION 或 PATHINFO_FILENAME。可進行異或運算。可選參數,默認返回所有值。
返回值
- checkmixed - 包含dirname等信息的數組,失敗時返回 false。
示例1: - 使用 pathinfo() 函數獲取文件路徑信息。
<?php
/**
* PHP pathinfo() 函數獲取文件路徑信息。
*
* @since Version 1.0.0
* @filesource
*/
// 獲取路徑信息
$path_info = pathinfo("/data/foot文件.txt");
print_r($path_info);
Array ( [dirname] => /data [basename] => foot文件.txt [extension] => txt [filename] => foot文件 )