PHP лучший способ найти строку в файле CSV - PullRequest
0 голосов
/ 01 октября 2018

Я бы хотел найти совпадение строки в файле CSV в PHP 5.

Для меня есть два способа сделать это:

  • Первый: Получить все вхождения из файла csv, а затем проверить, существует ли моя строка в массиве.
  • Секунда: для каждой строки моего файла CSV проверьте, соответствует ли она.Если это так, завершите цикл.

Каков наилучший способ сделать это?В моем CSV-файле много строк, поэтому я беспокоюсь о производительности.

Если вам известны некоторые подсказки об этом, я буду рад это услышать:)

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

Для больших файлов 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);
}
0 голосов
/ 01 октября 2018

Самый быстрый способ - прочитать файл в виде строки, а затем найти первое вхождение слова, примерно так:

$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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...