你是否遇到过只想从文件路径中提取文件名或扩展名的情况?
我认为有多种方法,例如使用split分隔符拆分文件路径或使用substr函数提取文件路径。
但是,如果你使用pathinfo函数,那么麻烦很容易就解决了!
什么是pathinfo函数?
什么时候用?
pathinfo函数是以数组形式获取文件路径信息的函数。
能得到什么样的信息呢?就是能只获取index.php这个文件的文件名index,或者只获取扩展名php的函数。
不仅如此,如果你有一个像 /webhome/website/index.php 这样的文件路径,你也可以只提取文件所在的路径,如 /webhome/website 。
尝试使用pathinfo函数
使用 pathinfo 函数并不困难。
让我们看一个示例。
<?php
$info = pathinfo('/ciyawang/com/test/index.php');
var_dump($info);
?>执行结果
array(4) {
["dirname"]=>
string(17) "/ciyawang/com/test"
["basename"]=>
string(9) "index.php"
["extension"]=>
string(3) "php"
["filename"]=>
string(5) "index"
}首先,我们将包含文件名的文件路径传递给pathinfo函数。
使用起来并不难,因为您只需将其作为参数传递即可。
我写的是将有关路径的信息保存在$info中作为返回值。
此时返回值是一个数组,可以通过指定具体的键名来带上每条信息。
我认为通过查看执行结果很容易理解
dirname basename extension filename
我想我能够获得四种类型的信息。
如果你从顶部解释,它看起来像这样。
| 键名 | 内容 |
|---|---|
| dirname | 不包含文件名的目录路径 |
| basename | 目录路径之外的文件名 |
| extension | 仅提取参数中指定文件名的扩展名 |
| filename | 获取除参数中指定的文件名扩展名之外的文件名 |
只需调用pathinfo,就能轻松获得这样的信息!

这样的文件路径会发生什么?
我试图查看特殊文件路径名返回什么样的结果。
我希望这会帮助你看看你是否可以通过这个 pathinfo 实现你想要实现的目标!
第1部分如果目录路径包含点(.)
例:/fruits/mask.melon/ciyawang.php
执行结果
array(4) {
["dirname"]=>
string(18) "/fruits/mask.melon"
["basename"]=>
string(11) "ciyawang.php"
["extension"]=>
string(3) "php"
["filename"]=>
string(7) "ciyawang"
}2.如果文件名没有扩展名
示例:/fruits/melon/ciyawang
执行结果
array(3) {
["dirname"]=>
string(13) "/fruits/melon"
["basename"]=>
string(7) "ciyawang"
["filename"]=>
string(7) "ciyawang"
}3.如果文件名包含两个或多个点(.)
例:/fruits/melon/ciyawang.com.php
执行结果
array(4) {
["dirname"]=>
string(13) "/fruits/melon"
["basename"]=>
string(17) "ciyawang.com.php"
["extension"]=>
string(3) "php"
["filename"]=>
string(13) "ciyawang.com"
}4.如果文件名不存在(隐藏文件)
例:/fruits/melon/.htaccess
执行结果
array(4) {
["dirname"]=>
string(13) "/fruits/melon"
["basename"]=>
string(9) ".htaccess"
["extension"]=>
string(8) "htaccess"
["filename"]=>
string(0) ""
}结语
这一次,我解释了获取文件名和扩展名等文件路径信息的pathinfo 。
烽烟博客