2009-10-24 72 views
0

我有PHP變量放置在一個包含的HTML文件中。執行此操作的最佳方式是什麼?在PHP中包含動態HTML

//contents of file1.php 
$variable1 = "text 1"; 
$variable2 = "text 2" 
$newContent = include('file2.php'); 
echo $newContent; 

//contents of file2.php 
<p>standard HTML with PHP... <strong><?=$variable1?></strong></p> 
<p><?=$variable2?></p> 

這種一般方法被認爲是確定的,但這裏的實際代碼不起作用。我是否使用file_get_contents()或include(),如何在包含文件中執行PHP以輸出正確的內容?

我應該使用類似HTML>>>

+0

請參閱編輯我的答案 – 2009-10-24 09:28:39

回答

4

你在做什麼是好的,你會發現,大多數人都使用完全相同的方法。我個人不會使用PHP短標籤(有些主機不啓用它),但這是一個偏好問題。

編輯:根據您的編輯,似乎你沒有啓用短標籤。檢查你的ini(http://php.net/manual/en/ini.core.php)。但你真的不應該使用短標籤,因爲隨着clownbaby提到,PHP 6將不贊成使用它們。即使您不關心將來驗證您的代碼,它們仍然很麻煩(這很明顯是因爲您的代碼無法正常工作)。切換到<?php echo $variable1; ?>,你會沒事的。

+3

約定 - 短標籤在PHP 6中被棄用。 – danjarvis 2009-10-24 03:29:11

2

我覺得你的代碼是罰款,甚至大多數的框架使用它...

關於使用短標籤,有些服務器不允許它,所以這裏是一個解決方法我用:

if ((bool) @ini_get('short_open_tag') === FALSE){ 
    echo eval('?>'.preg_replace("/;*\s*\?>/", "; ?>", str_replace('<?=', '<?php echo ', file_get_contents("path/to/file2.php")))); 
}else{ 
    $newContent = include("path/to/file2.php"); 
    echo $newContent; 
} 
2
$newContent = include('file2.php'); 
echo $newContent; 

你不應該在這裏需要echo什麼。只要包含PHP文件就應該執行其中的任何代碼,並將插入的模板吐出到頁面中。雖然有這樣的事情從include返回一個值,但這是一個您通常可以忽略的罕見功能。

正如ekhaled所說的,您可能需要啓用短標籤或將其替換爲始終受支持的<?php ... ?>處理指令式語法。

但是,將它包含在HTML中時,每個文本字符串對於htmlspecialchars都很重要,或者您有潛在的XSS安全漏洞。

<?php 
    function h($text) { 
     echo(htmlspecialchars($text, ENT_QUOTES)); 
    } 
?> 
... 

<p>standard HTML with PHP... <strong><?php h($variable1) ?></strong></p> 
<p><?php h($variable2) ?></p>