开发者

Extending PHPs echo?

开发者 https://www.devze.com 2023-02-15 04:25 出处:网络
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 e

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 manual开发者_如何学JAVAly.


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.


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.


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

0

精彩评论

暂无评论...
验证码 换一张
取 消