2011-03-07 88 views
0

我正在開發的網站使用「標題」和「頁腳」模板。這些模板包含在網站的每個頁面上。標題模板打開HTML幷包含完整的標頭標籤,然後打開標籤標籤。頁腳模板關閉正文標記,然後關閉HTML。的基本結構如下:如何使用php回顯php?

<?php 
//Set the current page name so it can be highlighted in the menu bar 
$page="Home"; 
//For page-specific HEAD includes 
$headincludes=array("<some type of code>","<some other type of code>"); 
include("/assets/template/header.php"); 
?> 
<!--START PAGE CONTENT--> 
<!--END PAGE CONTENT--> 
<?php 
include("/assets/template/footer.php"); 
?> 

報頭模板轉儲「headincludes」陣列到頁面的部爲這樣:

foreach ($headincludes as $toecho) 
echo $toecho; 

此方法工作得很好的東西,如javascript,但是當我嘗試添加一條PHP語句時,它會在瀏覽器的最後一頁中以未分析的PHP結尾。有沒有一些特殊的方法來用PHP回顯PHP?

+0

你能舉一個例子,你如何在'$ headincludes'數組中添加php語句? – 2011-03-07 06:34:21

+0

難道你不能只輸出沒有''標籤的php代碼嗎? – Shoe 2011-03-07 11:36:34

回答

0

從字符串執行PHP的方式是eval(),但是它很少是正確的工具。

你可以把你需要的PHP放在$headincludes以上,然後把它的輸出加到$headincludes

<?php 
//Set the current page name so it can be highlighted in the menu bar 
$page="Home"; 

include 'generators.php'; 

$links = generateLinks('some_arg'); 

//For page-specific HEAD includes 
$headincludes=array("<some type of code>","<some other type of code>", $links); 
include("/assets/template/header.php"); 
... 
+0

我意識到用一種不同的方法來構建是非常簡單的 - 只需將事物分解成更多模塊。現在,我有一個用於全局頁面代碼的文件,一個用於頁面特定的頭部代碼的部分,一個用於頁面標題和導航的文件,頁面主體以及用於頁腳的文件。多麼不同的觀點可以改變事物是多麼令人驚訝。 – bnrup 2012-10-17 05:51:37

0

你將什麼添加到您的數組?

如果您在設置該php這樣的:

$headincludes=array("$var1","$var2"); 

將無法​​正常工作。你所要做的那樣:

$headincludes=array($var1,$var2); 
+1

'「$ var1」'實際上應該可以工作,即使將它插入字符串中也是不必要的。 – alex 2011-03-07 06:35:53

0

在你的主文件執行PHP代碼和轉儲結果$headincludes。不需要在頭文件中執行代碼,結果不會改變。

還是會呢?如果你真的想將任意代碼注入到其他代碼中,那麼你做錯了。

0

什麼爲$headincludes

:使用include_once

0

,您是否試圖字符串串連。 這樣

$headincludes=array("<your html code>".$variable."<more html>","<more>") 
2

是,eval()(讀evil()),但是你最好重新考慮你的方法。也許,如果你正在尋找包括大量的PHP代碼,通過文件的數組,可以進一步包括:

// at the beginning of the file 
$includes = array('db.php', 'config.php'); 


// in your header, or footer (whichever is applicable) 
foreach($includes as $file){ 
    if(file_exists($file)){ 
     include $file; // or include_once 
    } 
} 

然後,使用動態包含,您可以管理,並根據需要加載額外的代碼。

+0

嗯,沒有。 'evil()'只需執行php作爲字符串。它不允許你回顯PHP。 – Shoe 2011-03-07 11:36:10

0

試試這個:

echo eval('?>html or javascript<?'); 
echo eval('php'); 
+2

由於'echo eval('?>

foobar
<?')'比'echo'
foobar
'或'?>
foobar
<?'更容易? – deceze 2011-03-07 06:51:22

+0

因爲它允許php或html在數組$ headincludes = array(「$ x = 2 + 3;」,「?>

foobar
<?」);' – grc 2011-03-07 07:23:50

0

如果您嘗試輸出php文件,一定要做到這一點很容易,但你的瀏覽器將無法運行。

所以,你需要:

  • 評估和演示php文件並輸出結果

  • 創建莫名其妙的html文件,你會輸出,而不是PHP文件。

include_once()include()是你的朋友,無論如何,它會(就像名字讀),包括文件,並在那地方的文件是「執行」。 「曾經」版本如果之前已經包含了相同的文件,則不會包含相同的文件兩次(如果您進行了多次包含,則又會執行另一次包含)。