>  기사  >  백엔드 개발  >  파일이나 디렉토리를 검색하고 바꾸는 데 좋은 클래스입니다. 매우 유용합니다.

파일이나 디렉토리를 검색하고 바꾸는 데 좋은 클래스입니다. 매우 유용합니다.

WBOY
WBOY원래의
2016-07-29 08:34:19819검색

이것은 텍스트 파일에 대해 특정 검색을 수행하고 지정된 텍스트를 특정 텍스트로 바꿀 수 있는 매우 유용한 프로그램입니다. 다음과 같이 하면 쉽게 할 수 있습니다.--teaman.oso.com.cn
클래스 파일 search_replace.inc
class search_replace{
var $find
var $replace;        var $files ; > var $directories;
var $include_subdir;
var $ignore_lines;
var $ignore_sep;                           ;
                                                                                                                                      ->find = $find
$this-> ;replace = $replace;
$this->files;
$this->directories = $directories; $this->include_subdir = $include_subdir; ->ignore_lines = $ignore_lines;
$this->occurrences = 0
                                          $this->search_function = '검색';                    $this->last_error      = ''; }
        /***************************************
        ** 사건 검색을 위한 접근자입니다.
        ***************************************/
               function get_num_occurences(){
                      $this->발생 횟수 반환
                }
                                                                                         
                                                                                                                               //대체 변수 설정
                                                               >                                     바꾸기){
                        $this->                      ; }
// 디렉터리 변수 설정
함수 Set_directories ($ 디렉터리) {
$ This- & GT; 디렉터리 = $ 디렉터리; Set_include_subdir
           함수 set_include_subdir($include_subdir){
                             |
        //确定是哪一种搜索方式
               function set_search_function($search_function){
                    스위치($search_function){
                               대소문자 '정상': $this->search_function = '검색';
                                           TRUE를 반환합니다.
                                           휴식;
                              case 'quick' : $this->search_function = 'quick_search';
                                           TRUE를 반환합니다.
                                           휴식;
                              case 'preg'  : $this->search_function = 'preg_search';
                                           TRUE를 반환합니다.
                                           휴식;
                              대문자 'ereg'  : $this->search_function = 'ereg_search';
                                           TRUE를 반환합니다.
                                           휴식;
                             기본값      : $this->last_error      = '잘못된 검색 기능이 지정되었습니다.';
                                            FALSE를 반환합니다.
                                           휴식;
                       }
                                                                                                             ~             ;                          $file_array = 파일($filename); 만약 count($this->ignore_lines) > 0){
                                                                           If(substr($file _array[$i],0,strlen ($this->ignore_lines[ $ j])) == $ This- & gt; IGNORE_LINES [$ J]) $ Continue_flag = 1
}
}
If ($ Continue_flag == 1 ) 계속;
$ OccureNces = count(explode($this->find, $file_array[$i])) - 1;
                               [$i])

        //빠른(빠른) 검색 방법을 사용할 경우 igonre_lines 기능이 없습니다.
                                                                                                                                                                              'r'), ); fclose($fp); 교체( $this->찾기, $this->replace, $file);
   return $return;                           파일 이름, 'r'), 파일 크기($filename))
                                                   $file = preg_replace( $this->find, $this->replace, $file)
if($occurences > 0) $return = array($occurences, $file); else $return = FALSE; return $return;
}
//ereg 검색 방법은ignore_lines를 지원하지 않습니다.
함수 ereg_search($filename){
                                                                                                                                                                      $fp = fopen($filename, 'r'), 파일크기($파일이름 )); -1; 발생, $file ); else $return = FALSE;
                                                                                                   >                             contents);
fclose($fp);
else{
this ->last_error = '파일을 열 수 없습니다: '.$filename; 검색하세요
                                                                                                                                                                         , $this->files)
for($i=0; $ifile) s); $i ){
if($this-> ;files[$ i ] == '.' 또는 $this->files[$i] == '..') 계속
                                                         $newfile = $this-& gt;$ser_func($this-> files[$i]); ){
$this->writeout ($this->files[$i], $newfile[1]);
                                    }
                                                                       
        //由do_search()사용, 排 Out所有要搜索的目录
              기능 do_directories($ser_func){
                      if(!is_ array($this->디렉터리)) $this->디렉터리 = 폭발(',', $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-> 디렉토리[] = $this->디렉토리[$i].$file.'/';
                                                   계속;
                                            계속 ;
                                             }
                                    }
                                                                                        if(is_array($newfile) = TRUE){
$this- >writeout($this->directories[$i].$file, $newfile[1])
                                              ~ ~ >                                                                                                           > ~                                   if ((is_array($this->files) AND count($this->files) > 0) OR $this-> 파일 != '') $this->do_files($ this->search_function); ;search_function);
                                                            // 클래스 종료
?>
//다음은 이 클래스를 호출하는 예시입니다. example.php
include('search_replace.inc' ); //파일 포함
//새 객체 생성, 검색 조건 설정, 최종 검색 결과 반환
$sr = new search_replace('asp', 'php', array('test. txt')); //검색 및 바꾸기
                                                                      use ‐ ’ s sr->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로 저장합니다. text.txt는 읽고 쓸 수 있어야 합니다.
"저는 ASP를 매우 좋아합니다. 배우기 쉽고 강력합니다. ASP가 대부분의 시장에서는 ASP가 너무 좋습니다. "
이때 Exame.php를 열면 다음과 같은 내용이 나옵니다.
다음 위치를 찾아서 교체하세요. 3.
아, 오류가 뜹니다. 다음과 같이 발생했습니다...:   
test.txt 파일을 확인해보니 확실히 asp가 나타나는 곳이 php로 바뀌었습니다.

위 내용은 파일이나 디렉터리를 검색하고 바꾸는 데 좋은 클래스를 소개합니다. 이는 매우 실용적이며 다양한 측면을 포함하고 있어 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.