我试图管理我在html标签中制作的自定义变量,如:
<title>{myTitle}</title>
现在如何使用PHP替换这些自定义变量“{...}”? 我看到大多数模板引擎都能做到这一点。
任何建议将不胜感激:)
答案 0 :(得分:2)
PHP已经是一个基本的模板环境,或者你可以使用像Smarty这样的工具来获得更多功能。但是使用PHP本身,您可以简单地包含标准变量:
<title><?= $myTitle ?></title>
答案 1 :(得分:2)
$arr = new array();
$arr["test"] = "hello";
$arr["foo"] = "world"
foreach ($arr as $key => $value) {
$yourTemplateAsString = str_replace("{".$key."}", $value, $yourTemplateAsString);
}
简单的解决方案......确定你可以使用正则表达式做一些奇特的东西并添加foreach和类似的东西。
答案 2 :(得分:2)
这是模板引擎的非常简单的版本。显然你需要将它放在一个具有更多功能的类中:)
显示页面
<?php
define(TEMPLATES_LOCATION, 'templates/');
function TemplateFunction ($template, $replaces) {
$template = file_get_contents(TEMPLATES_LOCATION . $template);
if (is_array($replaces)) {
foreach($replaces as $replacekey => $replacevalue){
$template = str_replace('{$' . $replacekey . '}', $replacevalue, $template);
}
}
return $template;
}
$keys = array(
'TITLE' => 'This is page title',
'HEADER' => 'This is some header'
);
echo TemplateFunction('body.tpl', $keys);
?>
模板文件(位于templates / body.tpl)
<html>
<head>
<title>{$TITLE}</title>
</head>
<body>
<h1>{$HEADER}</h1>
</body>
</html>
(EDIT)单个文件版本
<?php
define(TEMPLATES_LOCATION, '');
function TemplateFunction ($template, $replaces) {
// $template = file_get_contents(TEMPLATES_LOCATION . $template);
if (is_array($replaces)) {
foreach($replaces as $replacekey => $replacevalue){
$template = str_replace('{$' . $replacekey . '}', $replacevalue, $template);
}
}
return $template;
}
$keys = array(
'TITLE' => 'This is page title',
'HEADER' => 'This is some header'
);
$template = '<html>
<head>
<title>{$TITLE}</title>
</head>
<body>
<h1>{$HEADER}</h1>
</body>
</html>';
echo TemplateFunction($template, $keys);
?>
答案 3 :(得分:1)
如果你想使用这样的语法,你可以使用Twig,它是php的模板引擎。