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

时间:2015-10-26 23:28:54

标签: php csv

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

$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解决此问题?有没有办法在文件中搜索单词出现然后只抓取这些行?

1 个答案:

答案 0 :(得分:0)

您可以使用此^.*yourword.*$.

这样的正则表达式

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