我有一个巨大的文件,其中有数据行(几乎相同的长度)。我想浏览它们并找到某个单词的每个出现,然后取出该单词出现的整行并将其回显到屏幕上。目前我正在使用这种方法:
$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解决此问题?有没有办法在文件中搜索单词出现然后只抓取这些行?
答案 0 :(得分:0)
您可以使用此^.*yourword.*$.