2011-03-05 155 views
0

是否可以扩展PHP echo,以便我可以在显示的每个字符串上运行一些额外的处理代码?我需要一种方法来清理所有输出,并且不需要手动在每台显示器上拨打strip_tags扩展PHP echo?

+0

为什么你不能编写自己的函数,比如'strip_echo'? – casablanca 2011-03-05 15:53:17

+0

有很多代码在代码的很多部分都使用echo,我不想去手动修改它们。 – chustar 2011-03-05 15:57:23

+0

Edit0添加到我的答案。 – benjamin 2011-03-05 15:59:42

回答

5

您无法更改echo的行为,但可以使用php的output buffering functions(请参阅回调)。然而,这似乎是矫枉过正。正如casablance建议:创建一个函数。

2

chustar,

用静态方法编写你自己的类,并把它放在app/libs中。

编辑0:你是一名程序员,编写改变代码的代码。

0

@chutstar,如果你在Linux上,你可以使用sed找到并替换目录中.php文件中'strip_echo'的所有'echo',递归。

下面是Zend框架如何替换为 '// require_once' 全部 'require_once',除了出现在文件加载/ Autoloader.php或Application.pp

 
#!/bin/sh 
# cd path/to/ZendFramework/library 
# replace all 'require_once' with '//require_once' , and skip Autoloader.php & Application.php 
find . -name '*.php' -not -wholename '*/Loader/Autoloader.php' -not -wholename '*/Application.php' -print0 | xargs -0 sed --regexp-extended --in-place 's/(require_once)/\/\/ \1/g' 

所以 'require_once'脚本应该是

 
#!/bin/sh 
# replace all 'echo' with 'strip_echo' 
# cd path/to/ZendFramework/library 
find . -name '*.php' -print0 | xargs -0 sed --regexp-extended --in-place 's/echo/strip_echo/g' 

我测试过,它的工作原理。可能会有意想不到的替换,你应该检查一下,例如当'echo'是其他功能名称或变量等的意外部分时。

+1

geez,一点功课必须保持Ü – benjamin 2011-03-05 17:43:22

+0

不可以,根本没有家庭作业:)它的工作原理 – clu3 2011-03-19 04:55:56