2011-03-05 128 views
0

是否可以擴展PHP echo,以便我可以在顯示的每個字符串上運行一些額外的處理代碼?我需要一種方法來清理所有輸出,並且不需要手動在每臺顯示器上撥打strip_tags擴展PHP echo?

+0

爲什麼你不能編寫自己的函數,比如'strip_echo'? – casablanca 2011-03-05 15:53:17

+0

有很多代碼在代碼的很多部分都使用echo,我不想去手動修改它們。 – chustar 2011-03-05 15:57:23

+0

Edit0添加到我的答案。 – benjamin 2011-03-05 15:59:42

回答

5

您無法更改echo的行爲,但可以使用php的output buffering functions(請參閱回調)。然而,這似乎是矯枉過正。正如casablance建議:創建一個函數。

2

chustar,

用靜態方法編寫你自己的類,並把它放在app/libs中。

編輯0:你是一名程序員,編寫改變代碼的代碼。

0

@chutstar,如果你在Linux上,你可以使用sed找到並替換目錄中.php文件中'strip_echo'的所有'echo',遞歸。

下面是Zend框架如何替換爲 '// require_once' 全部 'require_once',除了出現在文件加載/ Autoloader.php或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' 

所以 'require_once'腳本應該是

 
#!/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'是其他功能名稱或變量等的意外部分時。

+1

geez,一點功課必須保持Ü – benjamin 2011-03-05 17:43:22

+0

不可以,根本沒有家庭作業:)它的工作原理 – clu3 2011-03-19 04:55:56