PHP在CSV文件中查找字符串的最佳方法

时间:2018-10-01 08:54:00

标签: php performance csv

我想在PHP 5的CSV文件中找到字符串的匹配项。

对我来说,有两种方法可以实现:

  • 首先:从csv文件中获取所有匹配项,然后检查数组中是否存在我的字符串。
  • 第二个:对于我的CSV文件的每一行,检查是否匹配。如果是这样,请结束循环。

哪种方法是最好的? CSV文件中有很多行,因此我关心性能。

如果您知道一些线索,我会很高兴听到它的:)

2 个答案:

答案 0 :(得分:1)

最快的方法是将文件读取为字符串,然后找到单词的第一个匹配项,如下所示:

$file = file_get_contents('file_name.csv');

if (strpos($file, 'your string') !== false) {
   // Found it
}

// Use mb_strpos for UTF-8
if (mb_strpos($file, 'your string') !== false) {
   // Found it
}

如果情况更复杂,那么最好的选择是使用regexpreg_match

更新:

您还可以采用这种方法并逐行检查,这样就不会将整个300K行文件存储在内存中。

$file = new SplFileObject('file_name.csv');

while($file->valid()) {
    if (strpos($file->current(), 'your string') {
        // Found it
        break;
    }
    $file->next();
}

答案 1 :(得分:1)

对于大型csv文件,您应该使用fgetcsv(http://php.net/manual/en/function.fgetcsv.php)。

$handle = fopen('filename.csv', 'r'))

if($handle)
{
    while(($line = fgetcsv($handle)) !== false)
    {
        // do whatever with csv data
    }
    fclose($handle);
}