Разработчику. Сборник рецептов PHP
Задавайте вопросы

Поиск в файле всех строк,
соответствующих шаблону

Вернуться назад

Задача

Необходимо найти в файле все строки, соответствующие шаблону.

Решение

Прочитайте файл в массив и примените функцию preg_grep().

Обсуждение

Есть два способа сделать это. Рассмотрим тот, что побыстрее:

$pattern = "/\bo'reilly\b/i"; // только книги издательства O'Reilly
$ora_books = preg_grep($pattern, file('/path/to/your/file.txt'));

Используйте команду file() для автоматической загрузки каждой строки файла в отдельный элемент массива и функцию preg_grep() для отфильтровывания неподходящих строк.

Приведем более эффективный способ:

$fh = fopen('/path/to/your/file.txt', 'r') or die($php_errormsg);
while (!feof($fh)) {
     $line = fgets($fh, 4096);
     if (preg_match($pattern, $line)) { $ora_books[] = $line; }
}
fclose($fh);

Так как первый способ читает все за один раз, то он в три раза быстрее второго способа, который анализирует файл строка за строкой, но расходует меньше памяти. Однако его оборотной стороной будет то, что поскольку регулярные выражения обрабатывают лишь одну строку зараз, второй способ не будет находить совпадения, занимающие несколько строк.

Вернуться назад

Рейтинг@Mail.ru

Яндекс.Метрика

Индекс цитирования

Рейтинг Сайтов ДОСКИ.РУ