1.用一个函数遍历目录下所有文件
【1】使用函数
- is_dir(): 函数检查指定的文件是否是目录,返回布尔值
- scandir(directory): 函数返回指定目录中的文件和目录的数组
【2】遍历思路
- 首先接收一个目录名称,然后用scandir扫描,其中会有两个额外的目录是“."和”..“需要去掉
- 然后遍历扫描后的每个文件是否为目录文件,如果是则在回调到第一步扫描里面的文件
【3】实现代码
$dir="think"; //需要遍历的目录
function scanDirList($dir){
$scan = scandir($dir); //扫描文件夹
foreach ($scan as $key => $value) {
if($value != '.' && $value != '..'){ //去除掉多余的'.'和'..'两个文件
$path = $dir.'/'.$value; //拼接当前父级目录,使最终输出完整目录
if(is_dir($path)){
/*
*判断扫描后的文件是否为目录,如果是则递归继续扫描,
*否则输出当前完整路径的文件名称
*/
scanDirList($path);
}else{
echo "<p>$path</p>";
}
}
}
}
scanDirList($dir);
2.写一个函数,尽可能高效的从一个标准url中取出文件的扩展名
<?php
function getExt($url)
{
$arr = parse_url($url);
/*
*parse_url解析一个 URL 并返回一个关联数组,包含在 URL 中出现的各种组成部分
*'scheme' => string 'http' (length=4)
*'host' => string 'www.sina.com.cn' (length=15)
*'path' => string '/abc/de/fg.php' (length=14)
*'query' => string 'id=1' (length=4)
*/
$file = basename($arr['path']);// basename函数返回路径中的文件名部分
$ext = explode('.', $file);
return $ext[count($ext)-1];
}
print(getExt('http://www.sina.com.cn/abc/de/fg.html.php?id=1'));
?>