如何摆脱" echo"在我的PHP代码中

时间:2016-06-29 03:06:36

标签: php regex

我继承了一个我需要修复的大文件。它包含超过500个echo语句,以前的开发人员包含它来调试他的代码。我需要找到一种简单的方法来消除所有这些echo语句,因此我不会将所有这些垃圾输出都输出到屏幕上。有时他将回声放在与另一段代码相同的行上。

我有一个想法是创建一个名为" nullo"什么都不做。然后用nullo搜索并替换单词echo。但是" echo"通常没有括号。因此PHP在遇到如下语句时会发出错误:

nullo' LABEL:';

如果我需要通过每一个并手动添加括号,如下所示:

nullo(' LABEL:');

我不妨继续删除所有500多个。 "回声"有时也与其他必要的代码在同一行。所以我不能忘掉所有这些线条。

以下是我正在处理的一些代码的示例。

function sample_func(){
    global $somevar;
    $allnames = "";
    echo 'LABEL: '; foreach($somevar as $var2) foreach($var2 as $pickk){ echo ' -' , $pickk[0]->key , '-' , $pickk[1]->name; $allnames=$allnames.$pickk[1]->name;}
    return $allnames;
}

我不反对下载和安装一些可以进行智能搜索和替换的花哨的IDE /记事本程序。 有什么想法吗?

3 个答案:

答案 0 :(得分:2)

这有用吗?它使用占有量词来减少正则表达式引擎的运行时间,因为您找到了超过500个实例...如果您想要任何其他说明或功能,请告诉我。

\becho\b[^;]++;

\b是一个字锚,可确保"prechordal"之类的其他字词不匹配。

祝你好运!

答案 1 :(得分:1)

使用它:

sed '/^[[:blank:]]*echo.*\;*[[:blank:]]*/d;s/^[[:blank:]]*echo.*\;//;s/ echo.*\;//' your_file.ext > new_file.ext

感谢以下评论:)

最后的编辑还删除了只有回声的行,使编辑后的文件更加清晰。

答案 2 :(得分:0)

这个怎么样?:(^|(;))\s*echo\s.*;

捕获在行开头或分号前面的任何echo,直到下一个分号。您必须使用\2$2(无论您的编辑使用哪种方式)进行反向引用,以替换正则表达式删除的任何前导分号。