遍歷目錄 批量替換檔案內容的類

2021-07-25 16:01:16 字數 3801 閱讀 9250

之前有需要,就寫了這個類。

功能:

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 剛才那個批量文字內容替換,只能替換記憶體中的內容,並不會替換文字中的內容,要替換檔案中的內容需要乙個乙個檔案去重定向,比較麻煩,本人比較懶,於是找到了一種更好的辦法 找到批量替換檔案內容...