如何摆脱;“回声”;在我的PHP代码中

如何摆脱;“回声”;在我的PHP代码中,php,regex,Php,Regex,我继承了一个需要修复的大型php文件。它包含500多条echo语句,以前的开发人员在调试代码时使用了这些语句。我需要找到一种简单的方法来清除所有这些echo语句,这样我就不会把这些垃圾输出到屏幕上。有时他把回音和另一段代码放在同一行 我的一个想法是创建一个名为“nullo”的函数,它什么都不做。然后搜索单词echo并将其替换为nullo。但是“echo”通常没有括号。因此,PHP在遇到以下语句时只会给出一个错误: 空“标签:” 如果我需要逐一检查并手动添加括号,如下所示: nullo('标签:'

我继承了一个需要修复的大型php文件。它包含500多条echo语句,以前的开发人员在调试代码时使用了这些语句。我需要找到一种简单的方法来清除所有这些echo语句,这样我就不会把这些垃圾输出到屏幕上。有时他把回音和另一段代码放在同一行

我的一个想法是创建一个名为“nullo”的函数,它什么都不做。然后搜索单词echo并将其替换为nullo。但是“echo”通常没有括号。因此,PHP在遇到以下语句时只会给出一个错误:

空“标签:”

如果我需要逐一检查并手动添加括号,如下所示:

nullo('标签:')

我不妨继续删除所有500多个。 “echo”有时也与其他必要的代码位于同一行。所以我不能把这些话都说出来

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

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/记事本程序。
有什么想法吗?

这样行吗?它使用所有格量词来减少正则表达式引擎的运行时间,因为您发现了500多个实例。。。如果您需要任何其他说明或功能,请告诉我

\becho\b[^;]++;
\b
是一个单词锚,用于确保其他单词如
“prechordal”
不匹配


祝你好运

这有用吗?它使用所有格量词来减少正则表达式引擎的运行时间,因为您发现了500多个实例。。。如果您需要任何其他说明或功能,请告诉我

\becho\b[^;]++;
\b
是一个单词锚,用于确保其他单词如
“prechordal”
不匹配

祝你好运

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

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

这如何?:
(^ |)(;)\s*echo\s*

捕获任何位于行首或前面有分号的
回显
,直到下一个分号。您必须使用
\2
$2
(以编辑器使用的为准)反向引用以替换正则表达式删除的任何前导分号。

使用以下方法:

sed '/^[[:blank:]]*echo.*\;*[[:blank:]]*/d;s/^[[:blank:]]*echo.*\;//;s/ echo.*\;//' your_file.ext > new_file.ext
编辑感谢下面的评论:)

最后一次编辑还将删除只有echo的行,使文件在编辑后更干净。

使用以下方法:

sed '/^[[:blank:]]*echo.*\;*[[:blank:]]*/d;s/^[[:blank:]]*echo.*\;//;s/ echo.*\;//' your_file.ext > new_file.ext
编辑感谢下面的评论:)


最后一次编辑还将删除只有echo使文件在编辑后更干净的行。

在文件中查找并替换,确保可以使用
ob\u start()
ob\u get\u clean()
,但从长远来看,请删除它们
fancy IDE/notepad
==notepad++虽然没有那么花哨。@ArtisticPoenix它是一个闪亮的记事本,但是有了xdebug插件,它就像一个单调的IDE(n++4life;)@Terminus-也许闪亮,但没有我的eclipse Juno那么生锈。。。lolI猜想现在有点晚了,但是为什么不保留Echo并让它们只在您选择调试时运行呢?是的,这将是一些工作,但以前的所有者可能有理由回显调试消息?也许代码非常不稳定?@Andreas或花一些时间正确设置一个测试环境,启用xdebug调试在文件中查找并替换,当然可以使用
ob_start()
ob_get_clean()
,但从长远来看,请删除它们
fancy IDE/notepad
==notepad++虽然没有那么花哨。@ArtisticPoenix它是一个闪亮的记事本,但是有了xdebug插件,它就像一个单调的IDE(n++4life;)@Terminus-也许闪亮,但没有我的eclipse Juno那么生锈。。。lolI猜想现在有点晚了,但是为什么不保留Echo并让它们只在您选择调试时运行呢?是的,这将是一些工作,但以前的所有者可能有理由回显调试消息?也许代码非常不稳定?@安德烈亚斯或花一些时间并适当地设置一个带有XDebug调试的测试环境,这将捕获出现在单词中间的“ECHO”实例,例如“Prordordal'”。正如@wcarroll所指出的,我相信@wcarroll的答案会留下缩进错误,如果一行以缩进开头并立即回音。这个答案应该可以解决这个问题。所以我尝试了这个(sed语句),它去掉了大约100个echo语句。但仍有400人左右。它没有摆脱像这样的简单问题:echo“
”;自从我运行sed语句以来,user2962623似乎更新了本文中的sed语句。它现在包含一个额外的点。我运行了一个程序,这次删除了379条echo语句。这是一个进步。但还没有完全修复。好的,我注意到有一个例子,一个标签+空格+回音行没有被捕获,所以我更新了一次。更多这会在单词中间出现“回声”的例子,比如“前弦”,正如@ WCARLoR指出的。我相信,如果一行从缩进开始并立即回响,@ WCARLL的答案将留下压痕错误。这个答案应该可以解决这个问题。所以我尝试了这个(sed语句),它去掉了大约100个echo语句。但仍有400人左右。它没有摆脱像这样的简单问题:echo“
”;自从我运行sed语句以来,user2962623似乎更新了本文中的sed语句。它现在包含一个额外的点。我运行了一个程序,这次删除了379条echo语句。这是一个进步。但还没有完全修复。好的,我注意到有一个例子,一个标签+空格+回音行没有被捕获,所以我更新了一次。更多干杯