你是否遇到过只想从文件路径中提取文件名或扩展名的情况?
我认为有多种方法,例如使用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 。