【发布时间】:2012-05-19 08:26:58
【问题描述】:
PHP 中是否有这样的函数在 unix/linux 系统中执行 grep -f 文件名。 如果没有,哪些 PHP 函数/工具将有助于为此创建自定义方法/函数。谢谢!
【问题讨论】:
PHP 中是否有这样的函数在 unix/linux 系统中执行 grep -f 文件名。 如果没有,哪些 PHP 函数/工具将有助于为此创建自定义方法/函数。谢谢!
【问题讨论】:
实际上恕我直言,我想说的是:
$result = preg_grep($pattern, file($path));
请参阅 preg_grepDocs 和 fileDocs。
如果您需要(递归地)对一组文件执行此操作,还有 glob 和 foreach 或 (Recursive)DirectoryIterator 或 GlobIteratorDocs 并且不要忘记 @987654325 @。
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;
}
【讨论】:
您可以结合使用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);
【讨论】:
file_get_contents(),但它会间歇性地失败。