我想在PHP 5的CSV文件中找到字符串的匹配项。
对我来说,有两种方法可以实现:
哪种方法是最好的? CSV文件中有很多行,因此我关心性能。
如果您知道一些线索,我会很高兴听到它的:)
答案 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
}
如果情况更复杂,那么最好的选择是使用regex
和preg_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);
}