class EasyTemplate // 这是一个简单的模板类
{
    var $error = "";
    var $tags = array();
    var $template_file = "";
    function EasyTemplate($template_file) // 构造函数,要求参数为一文件名
    {
        if(!file_exists($template_file)) // 检查文件是否存在
        {
            $this->error = "The template file $template_file does not exist."; // 设置错误信息
        }
        $this->template_file = $template_file; // 保存文件名
    }
    function assign($tag, $value) // 设置待替换的标记和替换内容
    {
        if(empty($tag)) // 若标记为空
        {
            $this->error = "Tag name is empty"; // 设置错误信息
            return(false); // 返回假
        }
        $this->tags[$tag] = $value; // 保存标记和值
        return(true); // 返回真
    }
    function easy_parse() // 工作函数,由easy_print()调用
    {
        $contents = @implode("", (@file($this->template_file))); // 读取文件并连接成串
        while(list($key, $value) = each($this->tags)) // 取出替换标记和值
        {
            $tag = '{'.$key.'}'; // 加工标记成 {xxxx}形式
            if(!strstr($contents, $tag)) // 如标记不在串中
            {
                $this->error = "Tag $tag not found in template ".$this->template_file."."; // 设置错误信息
                return(false); // 返回假
            }
            $contents = str_replace($tag, $value, $contents); // 替换标记内容
        }
        return($contents);    // 返回替换后的串
    }
    function easy_print() // 替换并输出
    {
        $ret = $this->easy_parse(); // 调用工作函数
        if($ret == false) // 若失败
        {
            return(false); // 返回假
        }
        print($ret); // 输出
        return(true); // 返回真
    }
}例1:
$p = new EasyTemplate("text.txt"); // 实例化类
$p->easy_print(); // 原样输出text.txt例2:
$p = new EasyTemplate("text.txt"); // 实例化类
$p->assign("pppp", "1234567"); // 假定text.txt中有{pppp}这样的串
$p->easy_print(); // 输出text.txt并将其中的{pppp}替换成1234567这个类的容错能力较差,若文件中没有要替换的标记则无输出结果

解决方案 »

  1.   

    文本文件替换类,代码需要优化,否则一个2M的文本的话就死定了,而且也中文也没戏.....唠叨兄如果没有替换标记不是return(false); // 返回假了马?
      

  2.   

    to bluemeteor(挂月||╭∩╮(︶_︶)╭∩╮) 
    如果没有替换标记不是
    return(false); // 返回假了马?你想表达什么意思
      

  3.   

    这么详细,100分全部给你了。
    不过我还想问个问题
    在html里{}这个标记有什么用(如:{new1})
    在php里{}又是什么作用,
    如果在html里加了这个{},那我还应该添加什么代码,
    当然还有在php里。
    我这里先谢过了。