PHP在目录中的多个文件中搜索字符串

时间:2016-07-06 17:35:15

标签: php

我只是PHP中的一个初学者所以我真的很抱歉,如果它只是一个愚蠢的问题。我有一个目录充满了.txt文件,我已经编写了一个代码来查找这些文件中的特定字符串并回显整行:

<?php
$search = $_POST['search'];
$dir = 'C:\xampp\htdocs\myfiles\dbl';
$files = scandir($dir,1);
foreach ($files as $lines){
    foreach($lines as $line)
    {
    if(strpos($line, $search) !== false)
    echo $line;
    }
}
?>

但是,我一直收到此错误:警告:在第19行的C:\ xampp \ htdocs \ myfiles \ search.php中为foreach()提供的参数无效

3 个答案:

答案 0 :(得分:1)

由于您实际上没有在第一个循环中打开文件而导致此错误。您必须在循环投掷行之前打开每个文件。 您可以通过两种方式实现:

1)使用file_get_contents()功能

2)使用一些函数处理文件(fopen(),fclose()等)

转到here

答案 1 :(得分:0)

使用 fopen() 读取每个文件,然后搜索字符串

答案 2 :(得分:0)

$search = 'test';
$dir = 'C:\xampp5.6\htdocs';
$files = scandir($dir,1);
foreach ($files as $lines){
    if(strlen($lines) > 3 && strpos($lines, '.txt') !== false){
        $readfile = fopen('C:\xampp5.6\htdocs/'.$lines, 'r');

        while(!feof($readfile)) {
            $contents = fgets($readfile);
            if(strpos($contents, $search) !== false)
                echo $lines.'<br>';
        }
        fclose($readfile);
    }
}