0

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

4

3 回答 3

5

您无法更改 php 的行为,echo但可以使用 php 的输出缓冲函数(请参阅回调)。然而,这似乎是矫枉过正。正如 casabance 建议的那样:创建一个函数。

于 2011-03-05T15:58:46.860 回答
2

楚斯塔尔,

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

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

于 2011-03-05T15:56:32.477 回答
0

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

下面是 Zend 框架如何用 '//require_once' 替换所有 'require_once',除了出现在文件 Loader/Autoloader.php 或 Application.pp 中的 'require_once'

#!/bin/sh
# cd path/to/ZendFramework/library
# 将所有 'require_once' 替换为 '//require_once' ,并跳过 Autoloader.php 和 Application.php
 寻找 。-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
# 用'strip_echo'替换所有'echo'
# cd path/to/ZendFramework/library
 寻找 。-name '*.php' -print0 | xargs -0 sed --regexp-extended --in-place 's/echo/strip_echo/g'

I tested and it works. There might be unexpected replaces that you should check though, for example when 'echo' is accidentally part of some other function names or variables, etc..

于 2011-03-05T16:12:14.113 回答