如何快速搜索文本文件中的大型字符串/记录列表?

时间:2013-12-06 10:29:18

标签: php

我有一些文本文件大小(500mb)。我需要一个脚本,尽可能先从该文本文件中搜索给定的字符串。我正在尝试

$query="demo";
$FileName = "search.txt";
$fh = fopen($FileName, 'r') or die("Can't open file");
$data = fread($fh, filesize($FileName));
$items = explode(" ", $data);
$Pos = array_search ($query, $items);
if($Pos !== FALSE)
{
    echo "Found";
}
else
{
    echo "Not Found";
}

是否有更快的搜索脚本或算法? 提前致谢。

1 个答案:

答案 0 :(得分:1)

不要读取整个文件。 逐行阅读并检查行中是否包含$query(假设结果不能在多行中):

$query = 'demo';
$fileName = 'search.txt';
$file = fopen($fileName, 'r') or die("Can't open file");

while ($line = fgets($file)) {
    if (strpos($query, $line) !== false ) {
        $found = true;
        break;
    }
}

fclose($fh);