用PHP在.txt文件中搜索短语


Search for a phrase in a .txt file with PHP

我有一个巨大的文件,其中有数据行(几乎相等的长度)。我想浏览它们,找到某个单词的每一个出现,然后把这个单词出现的整行都显示在屏幕上。目前我正在使用这个方法:

$result_counter = 0;
$result_array[1] = 'No results';
$search_slug = $request->input('search_slug');
$fp = fopen(base_path('storage'app'xas.txt'), "r");
while (false !== ($line = fgets($fp))) {
    // Process $line, e.g split it into values since it is CSV.
    $exploded = explode('-', $line);
    $exploded = implode('', $exploded);
    set_time_limit(30);
    if(strpos($exploded, strtoupper($search_slug))) {
        $result_counter++;
        $result_array[$result_counter] = $exploded;
    }
}
return view('results')->with(array('results' => $result_array, 'query' => $search_slug));
fclose($fp);

逐行浏览一个大文件太花时间了。

你可能会问-为什么不使用MySQL?

有一个巨大的问题-我的文件有250万行长,可能很快会更大。如果我试图一次性更新数据库,服务器的所有者会封禁我的账户,更不用说人们每小时都会查询其中的大部分内容。我也买不起"无限制"的服务器。我将尽快转移到MySQL,但现在我需要一个快速的解决方案。

如何使用PHP解决这个问题?有没有一种方法可以搜索文件中出现的单词,然后只抓取这些行?

您可以使用这样的正则表达式^.*yourword.*$.

资源:http://www.regular-expressions.info/completelines.html