$t -> set_file("index", "blog/template/$tem/view.htm");
$t->set_var("rsscountt",$str1);
$t->parse("output", "index");
$t->p("output");
解析:生成的目标变量;SET_FILE对应的变量名,是否追加 www.shengfang.org
$itpl->parse("firsts","first");
function parse($target, $varname, $append = false) {
if (!is_array($varname)) { 非数组
if ($this->debug & 4) {
echo "<p><b>parse:</b> (with scalar) target = $target, varname = $varname, append = $append</p>\n";
}
$str = $this->subst($varname); SUBST模板文件
if ($append) { 追加
$this->set_var($target, $this->get_var($target) . $str);
} else {
$this->set_var($target, $str); 赋值
} www.shengfang.org
} else {
reset($varname);
while(list($i, $v) = each($varname)) { 循环取值
if ($this->debug & 4) {
echo "<p><b>parse:</b> (with array) target = $target, i = $i, varname = $v, append = $append</p>\n";
}
$str = $this->subst($v);
if ($append) {
$this->set_var($target, $this->get_var($target) . $str);
} else {
$this->set_var($target, $str);
}
}
}
if ($this->debug & 4) {
echo "<p><b>parse:</b> completed</p>\n";
}
return $str;
}
打印数据 www.shengfang.org
function pparse($target, $varname, $append = false) {
if ($this->debug & 4) {
echo "<p><b>pparse:</b> passing parameters to parse...</p>\n";
}
print $this->finish($this->parse($target, $varname, $append));
return false;
}
这个很别扭,好像是块替换
$itpl->set_block("_index","cate_index","cate_indexs");
<!-- BEGIN cate_index -->
| <a href="{ link }" class="header">{ cate_index_var }</a>
<!-- END cate_index -->
function set_block($parent, $varname, $name = "") {
if ($this->debug & 4) {
echo "<p><b>set_block:</b> parent = $parent, varname = $varname, name = $name</p>\n";
}
if (!$this->loadfile($parent)) { 载入文件
$this->halt("set_block: unable to load $parent.");
return false;
}
if ($name == "") {
$name = $varname;
}
$str = $this->get_var($parent);
$reg = "/[ \t]*<!--\s+BEGIN $varname\s+-->\s*?\n?(\s*.*?\n?)\s*<!--\s+END $varname\s+-->\s*?\n?/sm";
preg_match_all($reg, $str, $m);
$str = preg_replace($reg, "{ " . "$name }", $str);
$this->set_var($varname, $m[1][0]); 设置变量
$this-> www.shengfang.org set_var($parent, $str);
return true;
}
执行数据替换
function subst($varname, $append = false) {
$varvals_quoted = array(); 定义数组
if ($this->debug & 4) {
echo "<p><b>subst:</b> varname = $varname</p>\n";
}
if (!$this->loadfile($varname)) { 载入文件
$this->halt("subst: unable to load $varname.");
return false;
} www.shengfang.org
// quote the replacement strings to prevent bogus stripping of special chars
reset($this->varvals); 起始数组
while(list($k, $v) = each($this->varvals)) { preg_replace -- 执行正则表达式的搜索和替换
$varvals_quoted[$k] = preg_replace(array('/\\\\/', '/\$/'), array('\\\\\\\\', '\\\\$'), $v);
}
$str = $this->get_var($varname); 取值
$str = preg_replace($this->varkeys, $varvals_quoted, $str);
return $str;
} www.shengfang.org
打印数据替换后的数据
function psubst($varname) {
if ($this->debug & 4) {
echo "<p><b>psubst:</b> varname = $varname</p>\n";
}
print $this->subst($varname);
return fa www.shengfang.org lse;
}
获得所有的处理后的变量
function get_vars() {
if ($this->debug & 4) {
echo "<p><b>get_vars:</b> constructing array of vars...</p>\n";
}
reset($this->varkeys); 所有以前SET_VAR定义的
while(list($k, $v) = each($this->varkeys)) {
$result[$k] = $this->get_var($k); 逐个取出来
} www.shengfang.org
return $result;
} www.shengfang.org
获得当前模板被处理后的文件字符串
function get_var($varname) {
if (!is_array($varname)) { 如果不是数组
if (isset($this->varvals[$varname])) { 判断是否有该变量
$str = $this->varvals[$varname]; 有则取SET_VAR所赋的值
} else {
$str = "";
} www.shengfang.org
if ($this->debug & 2) {
printf ("<b>get_var</b> (with scalar) <b>%s</b> = '%s'<br>\n", $varname, htmlentities($str));
}
return $str;
} else {
reset($varname); 第一个
while(list($k, $v) = each($varname)) { 分割
if (isset($this->varvals[$v])) {
$str = $this->varvals[$v];
} else {
$str = "";
}
if ($this->debug & 2) {
printf ("<b>get_var:</b> (with array) <b>%s</b> = '%s'<br>\n", $v, htmlentities($str));
}
$result[$v] = $str; 返回数组
}
return $result;
}
} www.shengfang.org