[英]PHP include HTML and echo out variable
我正在使用带模板的脚本。 所以我有这个PHP代码:
<?php
$string = "TEST";
echo(file_get_contents('themes/default/test.html'));
?>
我有这个HTML( test.html
文件):
<html>
<p>{$string}</p>
</html>
如何使PHP实际上在大括号内显示变量? 目前,它显示{$string}
。
PS:字符串也可能是具有许多变量的对象,我将像这样显示它们: {$object->variable}
。
PS 2:HTML必须保持原样。 这有效:
$string = "I'm working!"
echo("The string is {$string}");
我需要使用相同的原理来显示值。
您可以使用以下代码来获得所需的结果:
<?php
$string = "TEST";
$doc = file_get_contents('themes/default/test.html'));
echo preg_replace('/\{([A-Z]+)\}/', "$$1", $doc);
?>
PS请注意,它将假定{}中包装的每个字符串都有定义的变量。 因此,以上代码未实现错误检查 。 此外,它假定所有变量都只有字母字符。
使用echo很简单。
<html>
<p>{<?php echo $string;?>}</p>
</html>
更新1:
阅读了这么多评论后,找到了解决方案,请尝试以下操作:
$string = "TEST";
$template = file_get_contents('themes/default/test.html', FILE_USE_INCLUDE_PATH);
$page = str_replace('{$string}',$string,$template);
echo $page;
您所有的PHP必须在<?php ?>
块中,如下所示:
<html>
<p><?php echo "{" . $string . "}";?></p>
</html>
如果可以将替换内容保存在数组中而不是普通变量中,则可以使用下面的代码。 我在类似的用例中使用它。
function loadFile($path) {
$vars = array();
$vars['string'] = "value";
$patterns = array_map("maskPattern", array_keys($vars));
$result = str_replace($patterns, $vars, file_get_contents($path));
return $result;
}
function maskPattern($value) {
return "{$" . $value . "}";
}
如果您知道要在html中替换的变量,则可以使用PHP函数'str_replace'。 对于您的脚本,
$string = "TEST";
$content = file_get_contents('test.html');
$content = str_replace('{$string}', $string, $content);
echo($content);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.