让我重新解释一下这个问题。我正在尝试将html
文件的内容存储到字符串中。然后我希望php
字符串中的html
代码将php转换为我稍后提供的值。我认为字符串插值可能有效。我可能已经过度复杂了。但我认为在某些情况下仍能使用php
标签会很有趣。
我想做这样的事情:
$str = 'some words';
$php = '<p><?= $str; ?></p>';
echo $php;
将输出到DOM
(来源):
<p>some words</p>
或只是在浏览器屏幕上
some words
我得到了什么:
<p><!-- <?= $str; ?> --></p>
这甚至可能吗?
我知道上面的代码看起来很简单,但这只是我想解决的问题的简单案例。
<?php
// View
class View {
private static $paths = [];
private static function getTemplate($templatePath) {
if (!array_key_exists($templatePath, self::$paths)) {
// Filename must exist
if (!file_exists($templatePath)) {
die('File Doesn\'t Exist');
}
self::$paths[$templatePath] = file_get_contents($templatePath);
}
return self::$paths[$templatePath];
}
// Fill Template
public static function fill($vars, $templatePath) {
// Turn Vars into unique variables
extract($vars);
$input = self::getTemplate($templatePath);
// Get View Output
ob_start();
echo $input;
$output = ob_get_contents();
ob_end_clean();
return $output;
}
public static function fillWith($templatePath) {
}
}
答案 0 :(得分:2)
echo "<p>$str</p>";
请注意双引号语法("..."
)。如果字符串是单引号('...'
),则变量在PHP中不替换。
如果从外部源获取模板字符串,那么PHP的字符串插值将无法工作(如果可能的话,这将是一个巨大的安全风险)。
您可以使用regular expressions种replace种特定模式。
或使用模板引擎,例如Twig。它具有比您目前需要的更多功能,需要一些学习,但如果您需要更复杂的功能,它可以满足未来需求。
您也可以将模板文件设为PHP脚本,然后include
(而不是file_get_contents
)。 +在包含之前定义变量。那么PHP的常用字符串插值就可以了。 但我不建议您这样做。它不可读,并带来潜在的安全风险。
答案 1 :(得分:1)
多么简单,只需使用它:
<?php
$str = "some words";
echo "<p>$str</p>";
?>
此处还有一些关于单引号和双引号的额外信息: What is the difference between single-quoted and double-quoted strings in PHP?