【问题标题】:Extending PHPs echo?扩展 PHP 回声?
【发布时间】:2011-03-05 15:51:29
【问题描述】:

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

【问题讨论】:

  • 为什么不能自己写函数,比如strip_echo
  • 有很多代码在很多很多部分的代码中使用了echo,我不想去手动更改它们。
  • echo 是一种语言结构,不是函数,所以不能扩展

标签: php cakephp echo sanitization strip-tags


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    楚斯塔,

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

    Edit0:你是程序员,写代码改变代码。

    【讨论】:

      【解决方案3】:

      @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'

      我测试过,它可以工作。不过,您可能应该检查意外的替换,例如,当“echo”意外地成为某些其他函数名称或变量的一部分时,等等。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-15
        • 1970-01-01
        • 2023-03-22
        • 2012-04-04
        相关资源
        最近更新 更多