- <?php
- ob_start();//打开缓冲区
- //把生成文件的过程写出函数
- function tohtmlfile_cjjer($file_cjjer_name,$file_cjjer_content)
- {
- if (is_file ($file_cjjer_name)){
- @unlink ($file_cjjer_name);
- }
- $cjjer_handle = fopen ($file_cjjer_name,"w");
- if (!is_writable ($file_cjjer_name)){
- return false;
- }
- if (!fwrite ($cjjer_handle,$file_cjjer_content)){
- return false;
- }
- fclose ($cjjer_handle); //关闭指针
- return $file_cjjer_name;
- }
- require "main.php";
- $total = 21000;
- $tpl->assign("total", $total);
- $tpl->display(\'1.tpl\');
- //练习生成静态页面html
- $this_my_f= ob_get_contents(); //此处关键(ob_get_contents()把本页赋值一个变量)
- ob_end_clean();
- $filename = "indexhtm.html"; //新产生的html文件,
- if(tohtmlfile_cjjer($filename,$this_my_f))
- echo "生成成功 $filename";
- else
- echo "生成识别";
- ?>
复制代码
利用smarty和php生成静态html常用函数及实例//函数
function tohtmlfile_cjjer($file_cjjer_name,$file_cjjer_content)
{
if (is_file ($file_cjjer_name)){
@unlink ($file_cjjer_name);
}
$cjjer_handle = fopen ($file_cjjer_name,\"w\");
if (!is_writable ($file_cjjer_name)){
return false;
}
if (!fwrite ($cjjer_handle,$file_cjjer_content)){
return false;
}
fclose ($cjjer_handle); //关闭指针
return $file_cjjer_name;
}
////////下面是应用实例
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">
<?php
ob_start();
//把生成文件的过程写出函数
function tohtmlfile_cjjer($file_cjjer_name,$file_cjjer_content)
{
if (is_file ($file_cjjer_name)){
@unlink ($file_cjjer_name);
}
$cjjer_handle = fopen ($file_cjjer_name,\"w\");
if (!is_writable ($file_cjjer_name)){
return false;
}
if (!fwrite ($cjjer_handle,$file_cjjer_content)){
return false;
}
fclose ($cjjer_handle); //关闭指针
return $file_cjjer_name;
}
include_once(\'./Smarty/Smarty.class.php\'); //包含smarty类文件
$smarty = new Smarty(); //建立smarty实例对象$smarty
$smarty -> template_dir = \"./templates\"; //设置模板目录
$smarty -> compile_dir = \"./templates_c\"; //设置编译目录
//----------------------------------------------------
//左右边界符,默认为{},但实际应用当中容易与JavaScript
//相冲突,所以建议设成<{}>或其它。
//----------------------------------------------------
$smarty->left_delimiter = \"{\";
$smarty->right_delimiter = \"}\";
$smarty->assign(\"name\", \"李晓军\"); //进行模板变量替换
//编译并显示位于./templates下的index.tpl模板
$smarty->display(\"indextest7.tpl\"); //indextest7.tpl是已编好的模板。
//练习生成静态页面html
$this_my_f= ob_get_contents(); //此处关键(ob_get_contents()把本页赋值一个变量)
ob_end_clean();
$filename = \"indexhtm.html\"; //新产生的html文件,
if(tohtmlfile_cjjer($filename,$this_my_f))
echo \"生成成功 $filename\";
else
echo \"生成识别\";
?>
在除去绿色、红色文字后,运行indextest7.php时,直接输出一个网页,加上彩色代码后,网页不再直接输出,而是直接在后台生成了文件indexhtm.html网页文件。
ob_start :打开输出缓冲区
函数格式:void ob_start(void)
说明:当缓冲区激活时,所有来自PHP程序的非文件头信息均不会发送,而是保存在内部缓冲区。
ob_get_contents :返回内部缓冲区的内容。
使用方法:string ob_get_contents(void)
说明:这个函数会返回当前缓冲区中的内容,如果输出缓冲区没有激活,则返回 FALSE 。
ob_end_clean:删除内部缓冲区的内容,并且关闭内部缓冲区
使用方法:void ob_end_clean(void)
说明:这个函数不会输出内部缓冲区的内容而是把它删除!
- <?php
- class minupage
- {
- /**
- * config ,public
- */
- var $page_name="p";//page标签,用来控制url页。比如说xxx.php?PB_page=2中的PB_page
- var $next_page=\'>\';//下一页
- var $pre_page=\'<\';//上一页
- var $first_page=\'First\';//首页
- var $last_page=\'Last\';//尾页
- var $pre_bar=\'<<\';//上一分页条
- var $next_bar=\'>>\';//下一分页条
- var $format_left=\'[\';
- var $format_right=\']\';
- var $is_ajax=false;//是否支持AJAX分页模式
- /**
- * private
- *
- */
- var $pagebarnum=10;//控制记录条的个数。
- var $totalpage=0;//总页数
- var $ajax_action_name=\'\';//AJAX动作名
- var $nowindex=1;//当前页
- var $url="";//url地址头
- var $offset=0;
- /**
- * constructor构造函数
- *
- * @param array $array[\'total\'],$array[\'perpage\'],$array[\'nowindex\'],$array[\'url\'],$array[\'ajax\']...
- */
- function minupage($array)
- {
- if(is_array($array)){
- if(!array_key_exists(\'total\',$array))$this->error(__FUNCTION__,\'need a param of total\');
- $total=intval($array[\'total\']);
- $perpage=(array_key_exists(\'perpage\',$array))?intval($array[\'perpage\']):10;
- $nowindex=(array_key_exists(\'nowindex\',$array))?intval($array[\'nowindex\']):\'\';
- $url=(array_key_exists(\'url\',$array))?$array[\'url\']:\'\';
- }else{
- $total=$array;
- $perpage=10;
- $nowindex=\'\';
- $url=\'\';
- }
- if((!is_int($total))||($total<0))$this->error(__FUNCTION__,$total.\' is not a positive integer!\');
- if((!is_int($perpage))||($perpage<=0))$this->error(__FUNCTION__,$perpage.\' is not a positive integer!\');
- if(!empty($array[\'page_name\']))$this->set(\'page_name\',$array[\'page_name\']);//设置pagename
- $this->_set_nowindex($nowindex);//设置当前页
- $this->_set_url($url);//设置链接地址
- $this->totalpage=ceil($total/$perpage);
- $this->offset=($this->nowindex-1)*$perpage;
- if(!empty($array[\'ajax\']))$this->open_ajax($array[\'ajax\']);//打开AJAX模式
- }
- /**
- * 设定类中指定变量名的值,如果改变量不属于这个类,将throw一个exception
- *
- * @param string $var
- * @param string $value
- */
- function set($var,$value)
- {
- if(in_array($var,get_object_vars($this)))
- $this->$var=$value;
- else {
- $this->error(__FUNCTION__,$var." does not belong to PB_Page!");
- }
- }
- /**
- * 打开倒AJAX模式
- *
- * @param string $action 默认ajax触发的动作。
- */
- function open_ajax($action)
- {
- $this->is_ajax=true;
- $this->ajax_action_name=$action;
- }
- /**
- * 获取显示"下一页"的代码
- *
- * @param string $style
- * @return string
- */
- function next_page($style=\'\')
- {
- if($this->nowindex<$this->totalpage){
- return $this->_get_link($this->_get_url($this->nowindex+1),$this->next_page,$style);
- }
- return \'<span class="\'.$style.\'">\'.$this->next_page.\'</span>\';
- }
- /**
- * 获取显示“上一页”的代码
- *
- * @param string $style
- * @return string
- */
- function pre_page($style=\'\')
- {
- if($this->nowindex>1){
- return $this->_get_link($this->_get_url($this->nowindex-1),$this->pre_page,$style);
- }
- return \'<span class="\'.$style.\'">\'.$this->pre_page.\'</span>\';
- }
- /**
- * 获取显示“首页”的代码
- *
- * @return string
- */
- function first_page($style=\'\')
- {
- if($this->nowindex==1){
- return \'<span class="\'.$style.\'">\'.$this->first_page.\'</span>\';
- }
- return $this->_get_link($this->_get_url(1),$this->first_page,$style);
- }
- /**
- * 获取显示“尾页”的代码
- *
- * @return string
- */
- function last_page($style=\'\')
- {
- if($this->nowindex==$this->totalpage){
- return \'<span class="\'.$style.\'">\'.$this->last_page.\'</span>\';
- }
- return $this->_get_link($this->_get_url($this->totalpage),$this->last_page,$style);
- }
- function nowbar($style=\'\',$nowindex_style=\'\')
- {
- $plus=ceil($this->pagebarnum/2);
- if($this->pagebarnum-$plus+$this->nowindex>$this->totalpage)$plus=($this->pagebarnum-$this->totalpage+$this->nowindex);
- $begin=$this->nowindex-$plus+1;
- $begin=($begin>=1)?$begin:1;
- $return=\'\';
- for($i=$begin;$i<$begin+$this->pagebarnum;$i++)
- {
- if($i<=$this->totalpage){
- if($i!=$this->nowindex)
- $return.=$this->_get_text($this->_get_link($this->_get_url($i),$i,$style));
- else
- $return.=$this->_get_text(\'<span class="\'.$nowindex_style.\'">\'.$i.\'</span>\');
- }else{
- break;
- }
- $return.="\\n";
- }
- unset($begin);
- return $return;
- }
- /**
- * 获取显示跳转按钮的代码
- *
- * @return string
- */
- function select($url)
- {
- $return=\'<select name="PB_Page_Select" >\';
- for($i=1;$i<=$this->totalpage;$i++)
- {
- if($i==$this->nowindex){
- $return.=\'<option value=\'.$url.$i.\' selected>\'.$i.\'</option>\';
- }else{
- $return.=\'<option value=\'.$url.$i.\'>\'.$i.\'</option>\';
- }
- }
- unset($i);
- $return.=\'</select>\';
- return $return;
- }
- /**
- * 获取mysql 语句中limit需要的值
- *
- * @return string
- */
- function offset()
- {
- return $this->offset;
- }
- /**
- * 控制分页显示风格(你可以增加相应的风格)
- *
- * @param int $mode
- * @return string
- */
- function show($mode=1,$url=\'\')
- {
- switch ($mode)
- {
- case \'1\':
- $this->next_page=\'下一页\';
- $this->pre_page=\'上一页\';
- return $this->pre_page().$this->nowbar().$this->next_page().\'第\'.$this->select($url).\'页\';
- break;
- case \'2\':
- $this->next_page=\'下一页\';
- $this->pre_page=\'上一页\';
- $this->first_page=\'首页\';
- $this->last_page=\'尾页\';
- return $this->first_page().$this->pre_page().\'[第\'.$this->nowindex.\' 页]\'.$this->next_page().$this->last_page().\'第 \'.$this->select($url).\'页\';
- break;
- }
- /*----------------private function (私有方法)-----------------------------------------------------------*/
- /**
- * 设置url头地址
- * @param: String $url
- * @return boolean
- */
- function _set_url($url="")
- {
- if(!empty($url)){
- //手动设置
- $this->url=$url.((stristr($url,\'?\'))?\'&\':\'?\').$this->page_name."=";
- }else{
- //自动获取
- if(empty($_SERVER[\'QUERY_STRING\'])){
- //不存在QUERY_STRING时
- $this->url=$_SERVER[\'REQUEST_URI\']."?".$this->page_name."=";
- }else{
- //
- if(stristr($_SERVER[\'QUERY_STRING\'],$this->page_name.\'=\')){
- //地址存在页面参数
- $this->url=str_replace($this->page_name.\'=\'.$this->nowindex,\'\',$_SERVER[\'REQUEST_URI\']);
- $last=$this->url[strlen($this->url)-1];
- if($last==\'?\'||$last==\'&\'){
- $this->url.=$this->page_name."=";
- }else{
- $this->url.=\'&\'.$this->page_name."=";
- }
- }else{
- //
- $this->url=$_SERVER[\'REQUEST_URI\'].\'&\'.$this->page_name.\'=\';
- }//end if
- }//end if
- }//end if
- }
- /**
- * 设置当前页面
- *
- */
- function _set_nowindex($nowindex)
- {
- if(empty($nowindex)){
- //系统获取
-
- if(isset($_GET[$this->page_name])){
- $this->nowindex=intval($_GET[$this->page_name]);
- }
- }else{
- //手动设置
- $this->nowindex=intval($nowindex);
- }
- }
- /**
- * 为指定的页面返回地址值
- *
- * @param int $pageno
- * @return string $url
- */
- function _get_url($pageno=1)
- {
- return $this->url.$pageno;
- }
- /**
- * 获取分页显示文字,比如说默认情况下_get_text(\'<a href="">1</a>\')将返回[<a href="">1</a>]
- *
- * @param String $str
- * @return string $url
- */
- function _get_text($str)
- {
- return $this->format_left.$str.$this->format_right;
- }
- /**
- * 获取链接地址
- */
- function _get_link($url,$text,$style=\'\'){
- $style=(empty($style))?\'\':\'class="\'.$style.\'"\';
- if($this->is_ajax){
- //如果是使用AJAX模式
- return \'<a \'.$style.\' href="javascript:\'.$this->ajax_action_name.\'(\\\'\'.$url.\'\\\')">\'.$text.\'</a>\';
- }else{
- return \'<a \'.$style.\' href="\'.$url.\'">\'.$text.\'</a>\';
- }
- }
- /**
- * 出错处理方式
- */
- function error($function,$errormsg)
- {
- die(\'Error in file <b>\'.__FILE__.\'</b> ,Function <b>\'.$function.\'()</b> :\'.$errormsg);
- }
- }
- ?>
复制代码
|