扩展 PHP echo?

发布于 2024-10-20 05:02:25 字数 118 浏览 7 评论 0原文

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

Is it possible to extend the PHP echo so that I can run some extra processing code on every string being displayed? I need a way to sanitize all outputs and don't want to have to call strip_tags on every display manually.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

不乱于心 2024-10-27 05:02:25

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

You cannot change the behaviour of echo but you could make use php's output buffering functions (see the callbacks). However, this seems like overkill. As casablance suggested: create a function.

冷清清 2024-10-27 05:02:25

chustar,

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

Edit0:你是一个程序员,写出改变代码的代码。

chustar,

write your own class with static methods and put it in app/libs.

Edit0: You are a programmer, write the code that changes the code.

九歌凝 2024-10-27 05:02:25

@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
# 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”意外地成为某些其他函数名称或变量的一部分时,等等。

@chutstar, If you're on Linux, you can use sed to find and replace all 'echo' with 'strip_echo' in the .php files in a directory, recursively.

Below is how Zend framework replaced all 'require_once' with '//require_once', EXCEPT for 'require_once' that appears in file Loader/Autoloader.php or 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'

So YOUR script should be

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

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..

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文