1年前之前写过一个批量将文件转化成utf-8编码的函数,最近想用,却找不到了,今天重新了个获取某文件夹下所有文件的方法,且做记录,供以后使用。
<?php //php 获取某个文件夹及其子文件夹的所有文件并支持文件格式的筛选 function getAllFiles($folder, &$fileList=array(), $fileType=array()) { $folder = empty($folder) ? dirname(__FILE__) : $folder; $folder = str_replace('\\','/',$folder); $fileList = empty($fileList) ? array() : $fileList; $d = dir($folder); while (false !== ($file = $d->read())) { if($file != '.' && $file != '..') { $f = $folder.'/'.$file; if(is_dir($f)) { getAllFiles($f, $fileList ,$fileType); } else { if(!empty($fileType)) { if(in_array(pathinfo($f, PATHINFO_EXTENSION), $fileType)) { $fileList[] = $f; } } else { $fileList[] = $f; } } } } $d->close(); } //转换到期望的编码格式 function convertFileCharset($files, $inCharset='', $outCharset='') { foreach($files as $file) { $contents = file_get_contents($file); $inCharset = mb_detect_encoding($contents) === false ? $inCharset : mb_detect_encoding($contents); $outCharset = empty($outCharset) ? $inCharset : $outCharset; if(!empty($contents)) { $contents = iconv($inCharset, $outCharset.'//ignore', $contents); file_put_contents($file,$contents); } } } $t1 = microtime(true); $folder = dirname(__FILE__).'/develop'; $fileList = array(); getAllFiles($folder, $fileList, array('php','htm','css','js')); //echo '<pre>';print_r($fileList);exit; convertFileCharset($fileList, 'GBK', 'UTF-8'); $t2 = microtime(true); echo $t2 - $t1 ;