获取包含字符串的文件的名称

时间:2014-08-27 09:26:53

标签: php regex file file-get-contents

我想获取包含字符串的文件的文件名(在特定文件夹中)。

例如:有一个名为" test"的文件夹。在这个文件夹中有三个文件,但只有一个包含字符串" hello"。现在我想用PHP取回这个文件的名称。

(所有文件都是.txt)

提前致谢!

3 个答案:

答案 0 :(得分:3)

  1. 扫描文件夹。
  2. 打开每个文件/阅读内容。
  3. 使用函数stristr检查字符串“hello”是否存在。

答案 1 :(得分:3)

假设有* nix环境

以下内容将生成一个$output变量,其中包含一个文件名为

的数组
$output = exec("grep -l 'hello' test/*.txt");

答案 2 :(得分:1)

  1. 获取给定扩展名的文件夹中的所有文件名。
  2. 按顺序读取所有文件的内容。
  3. 阅读每个文件的每一行,查找与“hello world”匹配的单词
  4. 保存包含数组匹配项的文件名。
  5. 尚未对其进行测试,但以下内容应该有效:

    $data = glob(FOLDER . "*.txt");
    
    // filter
    $filter = array();
    
    // read contents of all files
    for($i=0; $i<count($data); $i++) {
        $file_path = $data[$i];
    
        // open file in read-only mode
        $fp = fopen( $file, 'r' );
    
        // read file data
        $file_data = fread($fp, filesize($file_path));
    
        // close file handle
        fclose($fp);
    
        // make sure we catch CR-only line endings.
        $file_data = str_replace("\r", "\n", $file_data);
    
        // match using regexp
        if(preg_match('/(hello world)/im', $file_data)) {
            $file_name = basename($data[$i]);
            array_push($filter, $file_name);
        }
    }
    
    // output filtered file names
    echo nl2br(print_r($filter, TRUE));