繁体   English   中英

PHP包含HTML并回显变量

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM