2009-10-24 38 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>