1. Html中每个tag都是都将作为树中的一个节点存在的,每个tag都属于树中的某一层。
2. 辅助数据结构:栈(stack)、List、HashTable。其中HashTable[i](i属于int类型)是一个List,用于临时存储第i层子Tag。
3. 顺序扫描Html文本,当遇到”<A~Z”这样的标志,表示可能是一个Tag,调用GetTag()函数对此段代码进行解析,解析出Tag名,Tag属性等等。
先看结果——
页面源代码如下:
分析一下代码,经过检查index_config.php(Smarty连接文件)、index.php文件均无错,下面重点看看模板文件,可能原因就出在这个tpl文件上,出代码——
复制代码 代码如下:
{% config_load file="1.conf" section="style2" %}
<html>
<head>
<meta http-equiv="Content-Type" content="text/htmlcharset=utf-8">
<title>{% #title# %}</title>
</head>
<body bgcolor="{% #bgcolor# %}">{%$hello%}
{%*这是一个注释语句*%}
<br />
{%$array.0.0%}
</body>
</html>
Smarty不能将模板文件中的变量解析成相应的值,肯定是调用文件时的错误了,但看着写的代码也没错啊,和书上的、网上的几乎一模一样的,怎么会出错呢??
百思不得其解之际,突然发现,在调用变量时自己的代码比他们多了空格…………………………
删除空格,大功告成:
页面源代码
总结,在使用Smarty模板时,不要为了代码的美观和可读性而增加空格,这样Smarty不会把这些当成变量解析的,而会直接输出
smarty有缓存,可以在配置里开启。然后用伪静态。
实在需要生成html文件 可以帮你写个下面的函数
function write_file($str,$filepath){
$fp=fopen($filepath,"wr")
$ok= fwrite($str,$fp)
fclose($fp)
return $ok
}
只是简单写下,如果有问题 自己慢慢调试把。