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);


Так как первый способ читает все за один раз, то он в три раза быстрее второго способа, который анализирует файл строка за строкой, но расходует меньше памяти. Однако его оборотной стороной будет то, что поскольку регулярные выражения обрабатывают лишь одну строку за раз, второй способ не будет находить совпадения, занимающие несколько строк.
Теги:
регулярные выражения
Добавлено: 22 Июля 2018 15:47:22 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...