扩展PHP回声?

时间:2011-03-05 15:51:29

标签: php cakephp echo sanitization strip-tags

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

3 个答案:

答案 0 :(得分:5)

你不能改变echo的行为,但你可以使用php的output buffering functions(参见回调)。然而,这似乎有点矫枉过正。正如casablance所说:创建一个函数。

答案 1 :(得分:2)

chustar,

使用静态方法编写自己的类,并将其放在app / libs中。

Edit0:您是程序员,编写更改代码的代码。

答案 2 :(得分:0)

@chutstar,如果您使用的是Linux,则可以使用 sed 以递归方式在目录的.php文件中查找并替换所有'echo'和'strip_echo'。

以下是Zend框架如何将'require_once'替换为'// require_once',EXCEPT替换为文件Loader / Autoloader.php或Application.pp中出现的'require_once'

#!/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'

所以你的脚本应该是

#!/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'意外地是其他一些函数名或变量等的一部分时。