我正在处理带有模板的脚本。所以我有这个PHP代码:
<?php
$string = "TEST";
echo(file_get_contents('themes/default/test.html'));
?>
我有这个HTML(test.html
文件):
<html>
<p>{$string}</p>
</html>
如何让PHP实际显示大括号内的变量?目前显示{$string}
。
P.S:
该字符串也可能是一个包含许多变量的对象,我将按以下方式显示它们:{$object->variable}
。
P.S 2:HTML必须保持原样。这有效:
$string = "I'm working!"
echo("The string is {$string}");
我需要使用相同的原则来显示值。
答案 0 :(得分:1)
您可以使用以下代码来获得所需的结果:
<?php
$string = "TEST";
$doc = file_get_contents('themes/default/test.html'));
echo preg_replace('/\{([A-Z]+)\}/', "$$1", $doc);
?>
P.S。请注意,它会假设每个字符串都包含在 {} 中 有一个变量定义。因此,上面的代码中实现了无错误检查。此外,它假设所有变量只有 alpha 字符。
答案 1 :(得分:0)
使用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;
答案 2 :(得分:0)
所有PHP必须在<?php ?>
块中,如下所示:
<html>
<p><?php echo "{" . $string . "}";?></p>
</html>
答案 3 :(得分:0)
如果可以将替换保存在数组而不是普通变量中,则可以使用下面的代码。我正在使用类似的用例。
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 . "}";
}
答案 4 :(得分:0)
如果您知道要在html中替换的变量,您可以使用PHP函数&#39; str_replace&#39;。对于您的脚本,
$string = "TEST";
$content = file_get_contents('test.html');
$content = str_replace('{$string}', $string, $content);
echo($content);