是否可以扩展PHP echo
,以便我可以在显示的每个字符串上运行一些额外的处理代码?我需要一种方法来清理所有输出,并且不希望必须手动调用每个显示器上的strip_tags
。
答案 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'意外地是其他一些函数名或变量等的一部分时。