PHP | pathinfo 函数
Lasted 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文件 )