php file_get_contents循环同一目录中的所有文件

时间:2018-03-15 10:48:39

标签: php while-loop file-get-contents file-put-contents

我正在使用PHP中的简单注释删除脚本。我想做的是为同一目录中的所有文件循环整个脚本。此时我并不关心子目录或子文件夹。此示例只有1个文件。我知道我们需要做一个do..while循环,但是什么是正确的语法?

<?php
$file='home.html';
$page = file_get_contents($file);
$current = preg_replace('<!--[^\[](.*?)-->', '', $page);
file_put_contents($file, $current);
echo $current;
?>

我有一个充满* .html文件的文件夹,因此这个脚本会读取每个带有* .html扩展名的文件并应用preg_replace。

提前致谢!

V

2 个答案:

答案 0 :(得分:2)

我不久前写了一个类似你需要的功能:

private function getFilesByPattern($pattern = '*.html', $flags = 0)
{
    $files = glob($pattern, $flags);
    foreach (glob(dirname($pattern) . '/*', GLOB_ONLYDIR | GLOB_NOSORT) as $dir) {
        $files = array_merge($files, $this->getTestFiles($dir . '/' . basename($pattern), $flags));
    }

    return $files;
}

此功能还可以通过子目录重复搜索!对于$flags,请查看glob的标志:http://php.net/manual/de/function.glob.php

可以像这样调用:getTestFiles('../src/directory/*.html')

答案 1 :(得分:0)

foreach (glob("*.html") as $file) {
$page = file_get_contents($file);
$current = preg_replace('<!--[^\[](.*?)-->', '', $page);
file_put_contents($file, $current);
echo $file . "<br>";
}

这很有效。它会删除文件夹中每个html文件的所有html注释。谢谢你指出我正确的方向!