1======================================简单的HTML生成处理=========== 2 public function html(){ 3 if(is_file("xinyou2.html")){ 4 echo "删除源文件中------<br/>"; 5 unlink("xinyou2.html"); 6 } 7 8 //在你的开始处加入ob_start(); 9 ob_start(); 10 11 $this->display('index'); 12 $temp=ob_get_contents(); 13 ob_end_clean(); 14 15 //写入文件 16 $fp=fopen("./xinyou2.html",'w'); 17 fwrite($fp,$temp) or die('写文件错误'); 18 echo "生成成功"; 19 } 20========================================================================= 21 22 23 protected function buildHtml($htmlfile='',$htmlpath='',$templateFile='') { 24 $content = $this->fetch($templateFile); 25 $htmlpath = !empty($htmlpath)?$htmlpath:HTML_PATH; 26 $htmlfile = $htmlpath.$htmlfile.C('HTML_FILE_SUFFIX'); 27 if(!is_dir(dirname($htmlfile))) 28 // 如果静态目录不存在 则创建 29 mk_dir(dirname($htmlfile)); 30 if(false === file_put_contents($htmlfile,$content)) 31 throw_exception(L('_CACHE_WRITE_ERROR_').':'.$htmlfile); 32 return $content; 33 } 34$this->buildHtml('静态文件', '静态路径','模板文件'); 35 36 37 参数一:静态文件,是指生成后的静态文件名,文件保存路径完整的就是:静态路径/静态文件。例如静态文件设置a/index.那么保存的路径就是项 38目路径/Html/a/index.html(默认的静态路径在项目路径的Html文件夹下,没有可以自己创建) 39参数二:静态路径,上面已经说明了默认的路径,3.0中可以在入口文件里加入参数来更改静态路径。 40define(‘HTML_PATH’, ‘./’);(将静态路径义为网站根目录) 41参数三:模板文件,我感觉官方这个描述是不正确的,准确的来说应该是目标模块,就是需要生成静态文件的模块。格式:模块名:操作。比如要生成Index下的a方法为静态文件,那就是Index:a。如果为空则默认生成当前操作的静态文件。 42生成静态页,我们要选择一个静态模板页,静态化网页的原理也就是替换模板中的变量,所以我们要把需要替换的变量的值获取出来,比如 43$this->assign ( 'webname', $websites ['name'] );$this->assign ( 'siteid', $siteid );$this->assign ( 'type', $type );$this->assign ( 'header', $websites ['templatedirectory'] . '@Public_header' );$this->assign ( 'footer', $websites ['templatedirectory'] . '@Public_footer' ); 44 45静态模板页有相应的{$header},{$footer}等,使用buildHtml方法后,就把这些变量给替换掉了。是不是很简单。 46 47 48 49<?php 50require("smarty/Smarty.class.php"); 51$t = new Smarty; 52$t->assign("title","Hello World!"); 53$content = $t->fetch("templates/index.htm"); 54//这里的 fetch() 就是获取输出内容的函数,现在$content变量里面,就是要显示的内容了 55$fp = fopen("archives/2005/05/19/0001.html", "w"); 56fwrite($fp, $content); 57fclose($fp); 58?> 59 60 61 62<?php 63ob_start(); 64echo "Hello World!"; 65$content = ob_get_contents();//取得php页面输出的全部内容 66$fp = fopen("archives/2005/05/19/0001.html", "w"); 67fwrite($fp, $content); 68fclose($fp); 69?> 70 71 72 73ob_start():开始“捕捉”缓存 也就是从这里开始 打开浏览器的缓存 74ob_end_flush():关闭浏览器缓存 75ob_get_content():读取缓存内容 76fopen(”文件路径”,”打开模式”)打开文件 这个函数的打开模式有好几种 下面介绍几种主要的模式: 77“r” 只读方式打开,将文件指针指向文件头。 78“r+” 读写方式打开,将文件指针指向文件头。 79“w” 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。 80“w+” 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。 81fwrite(”文件名称”,”写入内容”) 写入文件 82fclose() 关闭文件 83 84 85 86<?php 87ob_start();//打开浏览器缓存 88 89//下面是读取xml数据 90$parser = xml_parser_create(); //创建一个parser编辑器 91xml_set_element_handler($parser, "startElement", "endElement");//设立标签触发时的相应函数 这里分别为startElement和endElenment 92xml_set_character_data_handler($parser, "characterData");//设立数据读取时的相应函数 93$xml_file="1.xml";//指定所要读取的xml文件,可以是url 94$filehandler = fopen($xml_file, "r");//打开文件 95 96 97while ($data = fread($filehandler, 4096)) 98{ 99xml_parse($parser, $data, feof($filehandler)); 100}//每次取出4096个字节进行处理 101 102fclose($filehandler); 103xml_parser_free($parser);//关闭和释放parser解析器 104 105 106$name=false; 107$position=false; 108function startElement($parser_instance, $element_name, $attrs) //起始标签事件的函数 109{ 110global $name,$position; 111if($element_name=="NAME") 112{ 113$name=true; 114$position=false; 115echo "名字:"; 116} 117if($element_name=="POSITION") 118{$name=false; 119$position=true; 120echo "职位:"; 121} 122} 123 124function characterData($parser_instance, $xml_data) //读取数据时的函数 125{ 126global $name,$position; 127if($position) 128echo $xml_data."<br />"; 129if($name) 130echo $xml_data."<br />"; 131} 132 133function endElement($parser_instance, $element_name) //结束标签事件的函数 134{ 135global $name,$position; 136$name=false; 137$position=false; 138} 139//xml数据读取完毕 140 141$htmlname=$id.".html";//$id可以自己定义 这里代表用户传来的id 142$htmlpath="archives/".$htmlname; //设置路径变量 143$content = ob_get_contents();//取得php页面输出的全部内容 144$fp = fopen($htmlpath, "w"); 145fwrite($fp, $content); 146fclose($fp); 147?>
THINKPHP 生成真静态方法
Wesley13
2021-10-11
1597 0 0
点赞
收藏
评论区
加载中...