这种转移静态页面包车型地铁艺术平常都用来那个变化不是很频仍的页面
分类:热门资源

如笔者辈钦命分页时,每页20篇。某子频道列表内文章经数据库查询为45条,则,首先我们透过查询获得如下参数:1,总页数;2,每页篇数。第二步,for ($i = 0; $i allpages; $i++卡塔尔,页面成分获得,解析,小说生成,都在那循环中推行。不相同的是,die (创设文件.$filename.成功!;那句去掉,放到循环后的体现,因为该语句将暂停程序实践。例: Code: $fp = fopen (temp.html,r卡塔尔; $content = fread ($fp,filesize (temp.html卡塔尔国卡塔尔国; $onepage = ''20''; $sql = select id from article where channel=''$channelid''; $query = mysql_query ($sql); $num = mysql_num_威尼斯正规官网,rows ($query); $allpages = ceil ($num / $onepage); for ($i = 0;$i$allpages; $i++){ if ($i == 0){ $indexpath = index.html; } else { $indexpath = index_.$i.html; } $start = $i * $onepage; $list = ''''; $sql_for_page = select name,filename,title from article where channel=''$channelid'' limit $start,$onepage; $query_for_page = mysql_query ($sql_for_page); while ($result = $query_for_page){ $list .= ''''.$title.''''; } $content = str_replace ({ articletable },$list,$content); if (is_file ($indexpath卡塔尔国卡塔尔国{ @unlink ($indexpath卡塔尔; //若文件已存在,则删除 } $handle = fopen ($indexpath,wState of Qatar; //张开文件指针,创制文件 /* 检查文件是或不是被创建且可写 */ if (!is_writable ($indexpath卡塔尔卡塔尔国{ echo 文件:.$indexpath.不可写,请检查其性质后重试!; //纠正为echo } if (!fwrite ($handle,$content卡塔尔(قطر‎卡塔尔(قطر‎{ //将音信写入文件 echo 生成文件.$indexpath.退步!; //改革为echo } fclose ($handle卡塔尔; //关闭指针 } fclose ($fp卡塔尔(قطر‎; die (生成分页文件完结,如生成不完全,请检查文件权限系统后再一次生成!卡塔尔国;? 大约思路如此,在那之中如别的数据变动,数据输入输出检查,分页内容针对等可酌情在页面中投入。 在实质上小说系统处理进程在那之中,还会有不菲标题有待构思,与动态页面不一致之处,需注意的地点还恐怕有为数不菲。但大要思路正是如此,其余方面可就那样类推而得。

php中任重(rèn zhòng卡塔尔(قطر‎而道远运用的正是要用到fread(卡塔尔和fwirte(卡塔尔(قطر‎。而静态页面生成了未来,就能牵涉到更改的难点。这里能够用到正则相配的秘籍来替换模版中改造的地点。可是此种方法太费力,值得推荐介绍的章程是直接把本来生成的模版砍掉,重新生成,呵呵,真正的一走了之。
还索要表明的某个正是,这种变换静态页面包车型地铁艺术常常都用于那个变化不是很频仍的页面,比如新闻的结尾页面。而针对列表页,要是音讯更新不是很频仍的话,也是擅长的项目标。以后英特网流行大多能够调换静态页面包车型地铁blog或许论坛程序,都以经过手动点击后台“生成html页”的按键来“半电动”生成html的。而对一些音信量相当大的门户网址,则不行。因为静态页之所以叫“静态”,是因为其不足自行改动。如若音信列表每一日更新九十九回,那么静态的列表页将在重新生成一百回。假使小编有13个这么的栏目,那动脑筋也够脚气的了。
好了,闲话休说,以后来探视实际的程序演示:
first:是多个运用ob函数来促成的,代码比较轻便,功能相对也高级中学一年级些。
复制代码 代码如下:
ob_start();
@readfile("");
$text = ob_get_flush();
$myfile = fopen("myfile.html","w");
$text =
str_replace ("{counent}",$string,$text);
fwrite($myfile,$text);
ob_clean();
?>

因为纵然要扭转静态页面,动态读取那部分也是要保留的,把数量插入数据库后,把url传递给readfile函数,然后读入缓存,fwrite一下就可以转移静态页面,那么些是驼驼最赏识的一种作法。代码行数起码,作用最高。
second:普通生成静态html页。
这种作法便是不成方圆的来做,fread进来页面,然后str_replace替换
先是是创制最终内容页:
PHP代码
复制代码 代码如下:
$title = "";
$file = "TwoMax Inter test templet,
author:[email=Matrix@Two_Max]Matrix@Two_Max[/email]";
$fp = fopen ("temp.html","r");
$content = fread($fp,filesize ("temp.html"));
$content = str_replace("{file}",$file,$content);
$content = str_replace("{title}",$title,$content);
$filename = "test/test.html";
$handle = fopen ($filename,"w"卡塔尔国; //张开文件指针,成立文件
/*  检查文件是还是不是被创设且可写 */
if (!is_writable ($filename))
{
die ("文件:".$filename."不可写,请检查其品质后重试!"卡塔尔(قطر‎;
}
if (!fwrite ($handle,$content))
{ //将消息写入文件
die ("生成文书".$filename."退步!"卡塔尔(قطر‎;
}
fclose ($handleState of Qatar; //关闭指针
die ("成立文件".$filename."成功!"卡塔尔(قطر‎;
?>

这一步比较简单。只是独自的变量替换就能够。借使要扭转静态的列表页面包车型客车话,原理也是如同一口,用程序来变化小说列表,把它就是多少个大的变量,替换模版中的变量,列表的翻页页是如此。当然,如若有消息更新的话,列表翻页也是要双重生成的。
PHP代码
复制代码 代码如下:
$title = "http://";
$file = "TwoMax Inter test templet,
author:[email=Matrix@Two_Max]Matrix@Two_Max[/email]";
$fp = fopen ("temp.html","r");
$content = fread ($fp,filesize ("temp.html"));
$content = str_replace ("{file}",$file,$content);
$content = str_replace ("{title}",$title,$content);
// 生成列表起头
$list = '';
$sql = "select id,title,filename from article";
$query = mysql_query ($sql);
while($result = mysql_fetch_array ($query))
{
$list .= ''.$result['title'].'
';
}
$content .= str_replace("{articletable}",$list,$content);//生成列表结束
// echo $content;
$filename = "test/test.html";
$handle = fopen ($filename,"w");
//展开文件指针,创造文件
/* 检查文件是不是被创设且可写 */
if(!is_writable ($filename))
{
die ("文件:".$filename."不可写,请检查其个性后重试!"卡塔尔(قطر‎;
}
if(!fwrite($handle,$content))
{ //将音信写入文件
die ("生成文书".$filename."失败!"State of Qatar;
}
fclose($handleState of Qatar; //关闭指针
die ("创设文件".$filename."成功!"State of Qatar;
?>

至于翻页:
如作者辈钦赐分页时,每页20篇。某子频道列表内文章经数据库查询为45条,则,首先我们经过询问获得如下参数:1,总页数;2,每页篇数。第二步,for ($i = 0; $i < allpages; $i++卡塔尔国,页面成分获得,剖析,作品生成,都在那循环中进行。分裂的是,die ("成立文件".$filename."成功!";那句去掉,放到循环后的体现,因为该语句将暂停程序实践。
例:
PHP代码
复制代码 代码如下:
$fp = fopen ("temp.html","r");
$content = fread ($fp,filesize ("temp.html"));
$onepage = '20';
$sql = "select id from article where channel='$channelid'";
$query = mysql_query ($sql);
$num = mysql_num_rows ($query);
$allpages = ceil ($num / $onepage);
for ($i = 0;$i{
if ($i == 0)
{
$indexpath = "index.html";
}
else
{
$indexpath = "index_".$i."html";
}
$start = $i * $onepage;
$list = '';
$sql_for_page = "select name,filename,title from article where channel='$channelid' limit $start,$onepage";
$query_for_page = mysql_query ($sql_for_page);
while ($result = $query_for_page)
{
$list .= ''.$title.'
';
}
$content = str_replace("{articletable}",$list,$content);
if (is_file ($indexpath))
{
@unlink ($indexpath卡塔尔(قطر‎; //若文件已存在,则删除
}
$handle = fopen ($indexpath,"w"卡塔尔(قطر‎; //展开文件指针,创设文件
/*反省文件是或不是被成立且可写 */
if (!is_writable ($indexpath))
{
echo "文件:".$indexpath."不可写,请检查其性质后重试!"; //改过为echo
}
if (!fwrite ($handle,$content))
{//将信息写入文件
echo "生成文书".$indexpath."战败!"; //校订为echo
}
fclose ($handle卡塔尔(قطر‎; //关闭指针
}
fclose ($fp);
die ("生成分页文件完结,如生成不完全,请检查文件权限系统后再一次生成!"卡塔尔国;
?>

third:smarty模版生成静态页面
smarty自个儿有八个fetch函数,其功效有一点相近于fread(卡塔尔(قطر‎能够用来扭转静态的页面.
以这件事例大家或然看起来眼熟,对,smarty手册中有关fetch函数的例证,比竟官方的事例总是很精华的嘛!
PHP代码
复制代码 代码如下:
include("Smarty.class.php");
$smarty = new Smarty;
$smarty->caching = true;
// only do db calls if cache doesn't exist
if(!$smarty->is_cached("index.tpl"))
{// dummy up some data
$address = "245 N 50th";
$db_data = array("City" => "Lincoln", "State" => "Nebraska", "Zip" => "68502");
$smarty->assign("Name","Fred");
$smarty->assign("Address",$address);
$smarty->assign($db_data);
}// capture the output
$output = $smarty->fetch("index.tpl");
//这几个地方算是关键// do something with $output here
echo $output; //hoho 看见output的结果了呢 然后呢?fwrite一下,大家就获取大家所要的结果了。
$fp = fopen("archives/2005/05/19/0001.html", "w");
fwrite($fp, $content);
fclose($fp);
?>

PHP代码
复制代码 代码如下:
ob_start();
echo "Hello World!";
$content = ob_get_contents(卡塔尔(قطر‎;//得到php页面输出的全体内容
$fp = fopen("archives/2005/05/19/0001.html", "w");
fwrite($fp, $content);
fclose($fp);
?>

本文由威尼斯在线注册平台发布于热门资源,转载请注明出处:这种转移静态页面包车型地铁艺术平常都用来那个变化不是很频仍的页面

上一篇:贰零壹贰-二〇一一年中华打字与印刷墨水行当竞争情况,结合行业上中游市镇、经营发卖路子及中夏族民共和国攻略 下一篇:PHP 截取字符串专项论题
猜你喜欢
热门排行
精彩图文