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

ファイルやディレクトリの検索と置換に適したクラス -- 非常に実用的_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 16:03:16762ブラウズ

これは、テキスト ファイルに対して特定の検索を実行し、指定したテキストを特定のテキストに置き換えることができる非常に便利なプログラムです。たとえば、この記事にタイプミスがあった場合、それらを 1 つ見つけて修正するのは非常に面倒です。以下の方法で簡単に行うことができます。--teaman.oso.com.cn
クラス ファイル search_replace.inc


class search_replace var $files; include_subdir; var $ignore_lines; var $ignore_sep; var $last_error; , $directories = ' ', $include_subdir = 1, $ignore_lines = array()){

;replace = $replace; =$files; $this->ignore_lines = $ignore_lines; this->search_function = '検索'
機能get_num_occurences(){
}



= $ $ $ this> directories = $ directories($ nighore_lines){

//确定是哪一検索方式
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 FClose ($ FP); CCURENCES = Count (Explode ($ This-& GT; Find, $ File)) -1; replace, $ file);

IF ($ Occurences & GT; 0) $ Return = Array ($ Occurence, $ File); Else $ Return = False; } Re // preg 検索メソッドはignore_linesをサポートしていません
= 恐怖($fp = fopen($filename, 'r'), filesize($filename)); fclose($fp ; >replace, $file) ; If ($ Occurs & GT; 0) $ Return = Array ($ OccureNcess) 、$ file);
if($occurences > 0) $return = array($occurences, $file); else $return = FAL SE;
return $return;

//写新文
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->director) ies)) $this->directories =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->directory[$i].$file.'/';
続けます。
}else{

}
}this-> directories [$ i]。$ file、$ newfile [1]); count($this ->files) > 0) OR $this->files != '') $this->do_files($this->search_function); >検索機能);
// 授業終了
?> どうぞ

// 新しいオブジェクトを作成し、検索条件を設定し、最後に検索結果を返します

$sr = new search_replace('asp', 'php', array('test .txt')); // 検索と置換を呼び出します
$sr->set_search_function ('quick')

//以下はカスタマイズされた戻り情報です header('Content-Type: text/plain'); ;
アウト アウト アウト アウト アウト アウト アウト アウト アウト'‐'‐‐‐‐sr-> ;
echo 'ああ、次のようなエラーが発生しました。 '.$sr->get_last_error()."rn";
?>

//test.txt の場合は、text.txt が読み取り可能かつ書き込み可能である必要があることに注意してください
"私は ASP がとても好きです習得が簡単で、強力な機能を備えた ASP が市場のほとんどを占めていると聞きました。ASP は本当に優れています。」

この時点で、exame.php を開くと、次のように表示されます。次の場所を置き換えます: 3
ああ、次のようなエラーが発生しました...: php に置き換えられました。




http://www.bkjia.com/PHPjc/316312.html

www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/316312.html

技術記事

これは、テキスト ファイルに対して特定の検索を実行し、指定したテキストを特定のテキストに置き換えることができる非常に便利なプログラムです。たとえば、この記事にある 1 つの単語をすべて入力すると...

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