之前有需要,就寫了這個類。
功能:
1 遍歷目錄下的所有檔案(可指定字尾名)
2 批量替換檔案內容(正則、字串)
3 批量替換檔案字尾名
4 批量替換檔案編碼
使用例:
$direxplorer = new direxplorerclass();
$direxplorer->getdirexplorer('d:/test1/test2/'); //遍歷目錄d
:/test1/test2/
$direxplorer->modifyfileby_replace('aa','qq','shift-jis','utf-8','txt','txt'); //將所有檔案內容中的aa替換為qq,檔案編碼從shift-jis轉換為utf-8,將所有txt的字尾名改為txt
類**:
class
direxplorerclass
/** return a directory handle or die
*/private
function
opendir
($dirpath_target) else }/*
* close a directory handle
*/private
function
closedir
($dirhander)
/** 遍歷指定目錄,返回其下的檔名集合
** parameters:
* 1 dirpath:需要遍歷的資料夾
* 2 extension:只返回指定字尾名的檔案
* return:
* 遍歷檔案結果集合
*/function
getdirexplorer
($dirpath,$extension='')else
}$this->dirpath_array=$path;}}
}$this->closedir($dirhander);
return
$this->dirpath_array;}/*
* 字串替換檔案內容(區別大小寫)、編碼、字尾名
** parameters:
* 1 search: 需要替換的字串 (陣列可)
* 2 replace: 替換後的字串 (陣列可)
* 3 in_charset: 原編碼
* 4 out_charset: 新編碼
* 5 in_extension: 原字尾名
* 6 out_extension:新字尾名
* return:
* true or false
*/function
modifyfileby_replace
($search, $replace, $in_charset='', $out_charset='', $in_extension='', $out_extension='')
foreach($this->dirpath_array as
$key=>$file)
unlink($file);
if(strlen($in_extension)!=0 && strlen($out_extension)!=0)
file_put_contents($file, $content);
unset($content);
/* 更新遍歷檔名結果集 */
$this->dirpath_array[$key] = $file;
}return
true;}/*
* 字串替換檔案內容(忽略大小寫)、編碼、字尾名
*/function
modifyfileby_ireplace
($search, $replace, $in_charset='', $out_charset='', $in_extension='', $out_extension='')
/** 正則替換檔案內容(忽略大小寫)、編碼、字尾名
** parameters:
* 1 search: 需要替換內容的正規表示式
* 2 replace: 替換後的字串
* 3 in_charset: 原編碼
* 4 out_charset: 新編碼
* 5 in_extension: 原字尾名
* 6 out_extension:新字尾名
* return:
* true or false
*/function
modifyfileby_regex
($search, $replace, $in_charset='', $out_charset='', $in_extension='', $out_extension='')
if(preg_match('!([a-za-z\s]+)$!s', $search, $match) && (strpos($match[1], 'e') !== false))
foreach($this->dirpath_array as
$key=>$file)
unlink($file);
if(strlen($in_extension)!=0 && strlen($out_extension)!=0)
file_put_contents($file, $content);
unset($content);
/* 更新遍歷檔名結果集 */
$this->dirpath_array[$key] = $file;
}return
true;}/*
* 變換編碼
** parameters:
* 1 in_charset: 原編碼
* 2 out_charset: 新編碼
* 3 flag: 0對遍歷得到的檔案轉換編碼 1對指定內容轉換編碼
* 4 content: 僅在flag為1時使用
* return:
* true or false
*/function
changecharset
($in_charset='', $out_charset='', $flag=0, &$content='')
if($flag == 0)
}else
}return
true;}/*
* 變換字尾名
** parameters:
* 1 in_extension: 原字尾名
* 2 out_extension: 新字尾名
* 3 flag: 0對遍歷得到的檔案變換字尾名 1對指定檔名變換字尾名
* 4 filename: 僅在flag為1時使用
* return:
* true or false
*/function
changeextension
($in_extension='', $out_extension='', $flag=0, &$filename='')
if($flag == 0)
/* 更新遍歷檔名結果集 */
$this->dirpath_array[$key] = $file;
}}else}}
return
true;
}}
linux sed 批量替換檔案內容
一 linux sed 批量替換多個檔案內容 sed i s oldstring newstring g grep oldstring rl yourdir 其中,grep oldstring rl yourdir是查尋目錄中檔案內容 如將indexeddb目錄裡的檔案內容替換 idbtransac...
BAT批量替換檔案內容
bat批量操作 1.批量替換指定檔案指定內容 案列 將test.txt文字中的inflie替換為outfile echo off setlocal enabledelayedexpansion set currcd dp0 set strold outfile set strnew infile f...
Linux批量替換檔案內容
問題描述 現在需要將rack1目錄下 send檔案中的 ip 替換成 localip 10.0.0.1 n ip 剛才那個批量文字內容替換,只能替換記憶體中的內容,並不會替換文字中的內容,要替換檔案中的內容需要乙個乙個檔案去重定向,比較麻煩,本人比較懶,於是找到了一種更好的辦法 找到批量替換檔案內容...