Есть ли такая функция в PHP, которая делает grep -f filename в системах unix / linux. Если их нет, то какие PHP-функции / инструменты помогут создать для него настраиваемый метод / функцию. Благодаря!
На самом деле ИМХО, я бы сказал, что это следующее:
$result = preg_grep($pattern, file($path));
См. Документы и file
документов preg_grep
.
Если вам нужно сделать это (рекурсивно) по набору файлов, есть также glob
и foreach
или ( Recursive
) DirectoryIterator
или GlobIterator
Docs и не забыть Документы RegexIterator
.
Пример с SplFileObject и RegexIterator :
$stream = new SplFileObject($file); $grepped = new RegexIterator($stream, $pattern); foreach ($grepped as $line) { echo $line; }
Вывод (все строки $file
содержащие $ pattern):
$grepped = new RegexIterator($stream, $pattern); foreach ($grepped as $line) { echo $line; }
Демо: https://eval.in/208699
Вы можете комбинировать функцию file_get_contens (), чтобы открыть файл и функцию preg_match_all () для захвата содержимого с помощью регулярного выражения.
$file = file_get_contents ('path/to/file.ext'); preg_match_all ('regex_pattern_here', $file, $matches); print_r ($matches);