我有一些文本文件大小(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";
}
是否有更快的搜索脚本或算法? 提前致谢。
答案 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);