gpt4 book ai didi

php - 删除包含开始 php 标记和空行的文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:07:17 28 4
gpt4 key购买 nike

我正在处理一个我继承的遗留 PHP 项目,它有超过一千个文件,除了包含到其他类之外什么都没有。现在我已经重构它以使用 composer,并使用 PHPstorm 删除对包含类的引用,我有超过 1200 个文件,除了一个开始的 php 标记和一些空行之外什么都没有。

我能够使用这个正则表达式找到它们:\<\?php\n^(\s*$){1,}\z

但是,当我尝试将其替换为空或类似 DELETEME 的字符串时PhpStorm 实际上不会进行替换。

有没有一种方法可以通过命令行递归搜索只包含一个起始 PHP 标记和空行的文件,然后删除这些文件?

最佳答案

您可以使用一个不太为人所知的模式:\Q...\E。这会将中间的所有内容保留原样,因此您无需转义任何特殊字符:

\A        # the very start of the string
\Q<?php\E # <?php
\s+ # whitespaces including newlines, at least once
\Q?>\E # ?>
\Z # the very end of the string


PHP 中借助 glob() 这将是:

<?php
$regex = '~\A\Q<?php\E\s+\Q?>\E\Z~';

foreach (glob("*.php") as $file) {
$content = file_get_contents($file);
if (preg_match($regex, $content)) {
// do sth. here
// e.g. delete the file
}
}
?>

查看 regex on regex101.com 的演示.

关于php - 删除包含开始 php 标记和空行的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44185401/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com