如何在HTML中创建自定义变量

时间:2011-07-27 09:39:23

标签: php html

  

可能重复:
  Fastest way to replace string in PHP

我试图管理我在html标签中制作的自定义变量,如:

<title>{myTitle}</title>

现在如何使用PHP替换这些自定义变量“{...}”? 我看到大多数模板引擎都能做到这一点。

任何建议将不胜感激:)

4 个答案:

答案 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的模板引擎。