5

私はここでは本当の初心者です。特定のディレクトリ内のすべてのファイルとそのディレクトリのサブディレクトリをユーザー指定の文字列で検索するコードを誰かに教えてもらえないかと思っていました。可能であれば、検索するファイルタイプを制限します。*.php

私は 99% を使用する可能性がありますが、私は php を初めて使用し、これらの関数に関する知識がほとんどありませんRecursiveDirectoryIteratorpreg_matchGLOB

この種のコードは確かにコマンドで簡単に実行できUNIXますが、PHP はちょっと行き詰まっています (Unix ソリューションではなく PHP が必要です)。皆さんから得ることができるすべての助けに感謝します!

編集:私はあなたの何人かを混乱させたようです. その文字列がファイル名ではなく、ファイルの中にあることを望みます。

4

3 に答える 3

11

これは非常に簡単に実現できます。

// string to search in a filename.
$searchString = 'myFile';

// all files in my/dir with the extension 
// .php 
$files = glob('my/dir/*.php');

// array populated with files found 
// containing the search string.
$filesFound = array();

// iterate through the files and determine 
// if the filename contains the search string.
foreach($files as $file) {
    $name = pathinfo($file, PATHINFO_FILENAME);

    // determines if the search string is in the filename.
    if(strpos(strtolower($name), strtolower($searchString))) {
         $filesFound[] = $file;
    } 
}

// output the results.
print_r($filesFound);
于 2013-01-13T08:44:20.843 に答える
3

FreeBSD でのみテストされています...

渡されたディレクトリからすべてのファイル内を検索stringします (*nix のみ):

<?php

$searchDir = './';
$searchString = 'a test';

$result = shell_exec('grep -Ri "'.$searchString.'" '.$searchDir);

echo '<pre>'.$result.'</pre>';

?>

stringPHP のみを使用して、渡されたディレクトリからすべてのファイル内を検索します (ファイルの大きなリストではお勧めしません)。

<?php

$searchDir = './';
$searchExtList = array('.php','.html');
$searchString = 'a test';

$allFiles = everythingFrom($searchDir,$searchExtList,$searchString);

var_dump($allFiles);

function everythingFrom($baseDir,$extList,$searchStr) {
    $ob = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($baseDir), RecursiveIteratorIterator::SELF_FIRST);
    foreach($ob as $name => $object){
        if (is_file($name)) {
            foreach($extList as $k => $ext) {
                if (substr($name,(strlen($ext) * -1)) == $ext) {
                    $tmp = file_get_contents($name);
                    if (strpos($tmp,$searchStr) !== false) {
                        $files[] = $name;
                    }
                }
            }
        }
    }
    return $files;
}
?>

編集:詳細に基づいて修正。

于 2013-01-13T09:22:17.927 に答える
2

フォルダーから文字列を検索するための小さなファイルを見つけました。

ここからファイルをダウンロードします。

于 2016-03-01T16:02:23.017 に答える