ホームページ  >  記事  >  バックエンド開発  >  ファイルやディレクトリの検索と置換に適したクラス - 非常に便利

ファイルやディレクトリの検索と置換に適したクラス - 非常に便利

WBOY
WBOYオリジナル
2016-07-29 08:34:19786ブラウズ

これは、テキスト ファイルに対して特定の検索を実行し、指定したテキストを特定のテキストに置き換えることができる非常に便利なプログラムです。たとえば、この記事にタイプミスがあった場合、それらを 1 つ見つけて修正するのは非常に面倒です。以下の方法で簡単に行うことができます。--teaman.oso.com.cn
クラス ファイル search_replace.inc
class search_replace var $files; var $ignore_sep; $出現数;
//関数の定義と設定は次のとおりですthis->occurences; 関数 get_last_error(){

/
//确定是哪一検索方式
function set_search_function($search_function){
switch($search_function){
ケース '通常': $this->search_function = '検索';
TRUE を返します。
休憩。
case 'quick' : $this->search_function = 'quick_search';
TRUE を返します。
休憩。
case 'preg' : $this->search_function = 'preg_search';
TRUE を返します。
休憩。
case 'ereg' : $this->search_function = 'ereg_search';
TRUE を返します。
休憩。
default : $this->last_error = '無効な検索関数が指定されました';
FALSE を返します。
休憩。
}
}
//以下は搜索および代替手順序の主文書
function search($filename){
$occurences = 0;
$file_array = file($filename);
for($i=0; $i $ continue_flag = 0;
if(count($this->ignore_lines) > 0){
for($j=0; $j if(substr($file_array[ $i],0,strlen($this->ignore_lines[$j])) == $this->ignore_lines[$j]) $ continue_flag = 1;

if( $ continue_flag == 1) 続行します。
$occurences += count(explode($this->find, $file_array[$i])) - 1;
$file_array[$i] = str_replace($this->find, $this->replace, $file_array[$i]);
}
if($occurences > 0) $return = array($occurences, implode('', $file_array));それ以外の場合は $return = FALSE;
return $return;
}$ file = fread($ filename、 'r')、flose($ fp); preg 検索メソッドは、ignore_lines をサポートしていません
function preg_search($filename){

$matches = preg_split($this->find, $file)) - 1;
if($出現回数> 0) $return = array($出現、$file); それ以外の場合 $return = FALSE; $return Function ereg_search($filename){

$file = fread($fp = fopen($filename, 'r'), filesize($filename)); ($ fp);
//写新文件
function writeout($filename, $contents){
if($fp = @fopen($filename, 'w')){
fwrite($fp, $contents);
fclose($fp);
else{
$this->last_error = 'ファイルを開けませんでした: '.$filename;
}
}
//由do_search调用、すべての必要な検索対象文を削除
function do_files($ser_func){
if(!is_array($this->files)) $this->files =explode(', ', $this->files);
for($i=0; $ifiles); $i++){
if($this->files[$i] == '.' OR gt;ファイル[$i] == '..') 続行;
if(is_dir($this->files[$i]) == TRUE) 続行;
$newfile = $this->$ser_func($this->files[$i]);
if(is_array($newfile) == TRUE){
$this->writeout($this->files[$i], $newfile[1]);
$this->occurences += $newfile[0];

}
}
//由do_search()调用、すべて要検索対象目录
function do_directories($ser_func){
if(!is_array($this->directories)) $ this->directorys =explode(',', $this->ディレクトリ);
for($i=0; $idirectories); $i++){
$dh = opendir($this->directories[$i]);
while($file = readdir($dh)){
if($file == '.' OR $file == '..') 続行;
if(is_dir($this->directories[$i].$file) == TRUE)
if($this->include_subdir == 1){
$this->directories[] = $this ->ディレクトリ[$i].$file.'/';
続けます。
}else{

}
}
if(is_array($newfile) == TRUE){
- -> ディレクトリ[$i].$ファイル、$newfile[1]);
これを do_search() と呼びます。 ファイルまたはディレクトリの検索を開始できます
関数 do_search (){ _array($this->files) A​​ND count($this->files) > 0) OR $this->files != '') $this- >do_files($this-> search_function);// クラスの終了
?> /新しいオブジェクトを確立し、検索条件を設定し、最後に検索結果を返します
$ SR = New Search_replace ('asp', 'php', array ('test.txt')); //検索と置換を呼び出します
$ sr- & gt; set_search_function('quick'); // 検索条件を設定します $sr->do_search();
カスタマイズされた戻り情報
header('Content-Type: text/plain');
echo '次の場所を見つけて置換します: '.$sr->get_num_occurences()."rn";
echo 'ああ、次のエラーが発生します。 ......: '.$sr->get_last_error()."rn";
?>
//次のテキストを test.txt として保存します。テキストは読み取り可能かつ書き込み可能である必要があることに注意してください。
「私は ASP がとても好きです。習得が簡単で、強力な機能を持っています。ASP が市場のほとんどを占めていると聞きました。ASP はとても良いです。」
この時点で、exame.php を開くと、次のようになります。これら:
次の場所を見つけて置き換えます: 3
ああ、次のようなエラーが発生しました...: test.txt ファイルを確認すると、案の定、asp が表示される場所が php に置き換えられています。

上記は、ファイルやディレクトリの検索と置換のための優れたクラスを紹介しています。これは非常に実用的であり、PHP チュートリアルに興味のある友人に役立つことを願っています。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。