2011-11-24 29 views
-1

我在我的CMS中有一個代碼可以打印內容:<?php print $content ?> 我想輸出$content後面的實際php和html代碼,理想情況是在瀏覽器中。我的意思不是瀏覽器中的結果,而是它背後的實際代碼。它有可能嗎?如何在php中打印由某些函數生成的代碼?

編輯:只是進一步解釋:我需要打印$內容的源代碼。基本上這個變量產生一些HTML和PHP內容。我希望看到它生成的代碼,更改它並用我的自定義代碼替換$ content。理想情況下,源代碼應該打印在瀏覽器中,是否有anny php功能呢?

+0

你也許可以得到函數定義的文件內容,然後打印相關部分。 – TJHeuvel

+1

你的意思是[quine](http://en.wikipedia.org/wiki/Quine_(計算))? – fredley

+0

這並不完全清楚你的意思。也許你可以給出一些示例代碼和你期望的輸出結果? – Bryan

回答

0

你是什麼意思的'代碼'?我認爲你想做的事情是不可能的,除非你做了某種奎因,當你運行它時,不可能輸出php文件的實際php代碼。

如果$content是一樣的東西:

$content = 3 + 4 + 5; 

echo $content;將輸出12是嗎?但我正在考慮它你想要輸出3 + 4 + 5或其他東西。事情是,PHP(儘管它不像感覺喜歡它)被編譯。在這個簡單的例子中,3 + 4 + 5完全沒有存儲在你編譯的程序中,它被存儲爲12(因爲它是靜態的)。更復雜的代碼行將被存儲爲指針,值等,所有這些都會在很好的混淆機器代碼中進行。回到3 + 4 + 5需要閱讀輸入文件並輸出相關的行,這很困難(想想如果你添加或刪除一些行會發生什麼,或者你的運行程序如何知道源文件中的位置,或者即使它是在正確的源文件中)。

tl; dr:這是不可能的。

+0

這是有道理的。 – Vonder

2

首先安裝Devel Module,它有一個很好的功能叫dpm(),它將打印任何變量的內容到Drupal消息區域。

然後,你需要進入你的主題template.php文件和實施hook_preprocess_page()

function mytheme_preprocess_page(&$vars) { 
    dpm($vars['content']); 
} 

之前它渲染成一個字符串,將打印出$content陣列。在相同的預處理功能中,您也可以根據需要更改$vars['content'],並且這些更改將反映在page.tpl.php中的$content中。

希望幫助

+0

不錯,我會試試看。 – Vonder