我想知道如何(递归地)扫描目录文件(100+),在文件内容中查找preg_match()
。我正在查看是否有任何文件包含反引号(`)。
感谢您的回答。
答案 0 :(得分:0)
你可以使用 php 函数opendir
尝试这个函数:
<?php
function findbacktick ($dir){
// Open a known directory, and proceed to read its contents
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
preg_match("/'/", $file, $matches);
if (count($matches)>=1) {
echo 'file contains a backtick : '.$file.'</br>-----</br>';
}
}
closedir($dh);
}
}
}
$dir = "path/to/dir";
findbacktick ($dir);
?>
答案 1 :(得分:0)
您可以在递归函数中包装glob
。我给出了以下基本版本的想法。
function find_files($dir, $files = []) {
foreach (glob($dir."/*") as $file) {
if(is_dir($file)) {
$files = find_files($file, $files);
}
$content = file_get_contents($dir."/".$file);
if(preg_match('/[YOUR_PATTERN]/', $content)) {
$files[] = $file;
}
}
return $files;
}
我还没有尝试过,但我想它应该可行。
PS。它可能会给你内存耗尽错误或超时错误。