自己用的,比较简陋 $html = new html; $html->dirname = '../html/'.$itemid ; $html->filename = mysql_insert_id().'.html'; $html->filecontact = $contact; $html->createhtml(); class html { var $dirname; //指定文件存放路径(文件夹名称) var $filename; //html文件名 var $filecontact; //html文件内容 function createdir(){ if (!is_dir($this->dirname)){ mkdir($this->dirname); } } //生成html function createhtml(){ $this->createdir(); $fp=@fopen($this->dirname.'/'.$this->filename,'w') or die("Failed to open the file ".$this->dirname.'/'.$this->filename." !"); @fwrite($fp,$this->filecontact); fclose($fp); } function deletehtml(){ unlink($this->dirname.'/'.$this->filename); } }
$html = new html;
$html->dirname = '../html/'.$itemid ;
$html->filename = mysql_insert_id().'.html';
$html->filecontact = $contact;
$html->createhtml();
class html
{
var $dirname; //指定文件存放路径(文件夹名称)
var $filename; //html文件名
var $filecontact; //html文件内容 function createdir(){
if (!is_dir($this->dirname)){
mkdir($this->dirname);
}
}
//生成html
function createhtml(){
$this->createdir();
$fp=@fopen($this->dirname.'/'.$this->filename,'w') or die("Failed to open the file ".$this->dirname.'/'.$this->filename." !");
@fwrite($fp,$this->filecontact);
fclose($fp);
}
function deletehtml(){
unlink($this->dirname.'/'.$this->filename);
}
}
<head>
<title></title>
<meta http-equiv="Content-Type" c>
</head>
<body >
<table $htmlformat[0] height="100%" border="0" width="100%" cellpadding="10" cellspacing="0" bgcolor="#eeeeee" style="border:1px solid #000000">
<tr>
<td width="100%" valign="middle" align="left">
<span style="color: $htmlformat[1];font-size: $htmlformat[2]">$htmlformat[3]</span>
</td>
</tr>
</table>
</body>
</html>
2.asp.net代码:
//---------------------读html模板页面到stringbuilder对象里----
string[] format=new string[4];//定义和htmlyem标记数目一致的数组
StringBuilder htmltext=new StringBuilder();
try
{
using (StreamReader sr = new StreamReader("存放模板页面的路径和页面名"))
{
String line;
while ((line = sr.ReadLine()) != null)
{
htmltext.Append(line);
}
sr.Close();
}
}
catch
{
Response.Write("<Script>alert('读取文件错误')</Script>");
}
//---------------------给标记数组赋值------------
format[0]="background=\"bg.jpg\"";//背景图片
format[1]= "#990099";//字体颜色
format[2]="150px";//字体大小
format[3]= "<marquee>生成的模板html页面</marquee>";//文字说明
//----------替换htm里的标记为你想加的内容
for(int i=0;i<4;i++)
{ htmltext.Replace("$htmlformat["+i+"]",format[i]);
}
//----------生成htm文件------------------――
try
{
using(StreamWriter sw=new StreamWriter("存放路径和页面名",false,System.Text.Encoding.GetEncoding("GB2312")))
{
sw.WriteLine(htmltext);
sw.Flush();
sw.Close();
}
}
catch
{
Response.Write ("The file could not be wirte:");
}
小结
用此方法可以方便的生成html文件。程序使用了是循环替换,因此对需替换大量元素的模板速度非常快
同时 支持下我的网站 http://www.bework.com.cn/
原来是PHP呀
不好意思
class CreateHtml
{
function mkdir( $prefix= 'article' )
{
$y = date('Y');
$m = date('m');
$d = date('d');
$p=DIRECTORY_SEPARATOR;
$filePath='article'.$p.$y.$p.$m.$p.$d;
$a=explode($p,$filePath);
foreach ( $a as $dir)
{
$path.=$dir.$p;
if(!is_dir($path))
{
//echo '没有这个目录'.$path;
mkdir($path,0755);
}
}
return $filePath.$p;
}
function start()
{
ob_start();
}
function end()
{
$info = ob_get_contents();
$fileId = '12345';
$postfix = '.html';
$path = $this->mkdir($prefix= 'article');
$fileName = time().'_'.$fileId.$postfix;
$file=fopen($path.$fileName,'w+');
fwrite($file,$info);
fclose($file);
ob_end_flush();
}
}
?>
<?php
$s=new CreateHtml();
$s->start();
?>
<html>
<body>
HTML页面文字
</body>
</html>
<?php
$s->end();
?>
apache的mod_rewrite,或者iis的rewrite生成html:
1. xsl
2. 自己写模版,然后用字符串替换或者正则表达式来进行替换。
$handle = fopen("index.html","w");$content = "静态文件内容";//写入
fwrite($handle,$content);其他的操作无非就是对内容处理,得到你想要的..
...................
$output = ob_get_contents();
ob_end_clean();
$CONFIG['obstart'] == 1 ? ob_start('ob_gzhandler') : ob_start();
$path="********";
writeover($path,$output);
就可以做到无须模板,完全自动生成,更新。
此已经实现。