しおんの部屋

3DCG とか スクリプト とか…

phpでgrepを使わずに指定した文字列を含むファイル名の一覧を表示する

2015年11月02日 | php

wordpress に新しいテーマを採用し、構造が良く分からなかったので、
grep で content-area という文字列を含むファイル名一覧を得ようとした。


  echo shell_exec("grep -r content-area wp-content/themes/xxx/*');
?>

ところがレンタルサーバーの制限で shell_exec が実行できなかった。
そこで、自分で関数を作ることにした。

この関数は、
 $t に探したい文字列
 $d に探したいファイルを含むディレクトリ
を設定し実行すると、
$d のディレクトリやそのサブディレクトリ内のファイルをサーチし、
$t の文字列を含むファイルのパスを全て表示する。


  function SearchText( $t , $d ){
    foreach( scandir( $d ) as $d0 ){
      if(( $d0 != "." )and( $d0 != ".." )){
        $d1 = $d."/".$d0 ;
        if( is_dir( $d1 ) ){
          SearchText( $t , $d1 );
        }else{
          $w1 = file_get_contents( $d1 );
          if( $w1 !== FALSE ){
            $w2 = strpos( $w1 , $t );
            if( $w2 !== FALSE ){
              echo "${d1}
\n" ;
            }
          }
        }
      }
    }
  }
?>

以下のコマンドを実行すると


  $t = "content-area" ;
  $d = "wp-content/themes/xxx" ;
  SearchText( $t , $d );
?>

以下のようにファイル名一覧が表示される。

wp-content/themes/xxx/index.php
wp-content/themes/xxx/page.php
wp-content/themes/xxx/single.php

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする