没有用PHP写过类似程序,对PHP也不是怎么熟
但是既然,ASP可能用FSO生成html的文件,PHP肯定也有相关的文件操作函数用来写文件,这样就可以了啊

解决方案 »

  1. 可惜php中没有createfile()类似的函数,我以前还看下载过一个这样的程序,现在怎么也找不到了,有一个tmpfile()创建临时文件,不知道能不能派上用场?
      

  2. 大型网站的新闻系统的文件名一般是2002123011.shtml等,这些都是由程序从模板自动生成的吧,很多asp的新闻能做到这一点,不知道用php怎么做?
      

  3. 主要要用到文件的
    行更新(文件不存在自动创建),行删除,行插入(文件不存在自动创建)我前一阵自己编了几个这样的函数,明天发给你(现在我在网吧,我们学校寝室里没有网线)。缺点是只能按行号定位指定行。
    你要是想生成html,也可以不用那几个函数,可以直接用fputs,我也有代码,改天一块给你。别急啊!
      

  4. 非常感谢!
    这是我的email:worldpeak@163.com
      

  5. www.feyge.com请大家去看看是不是类似那样的,看栏目下的文章的路径。
      

  6. to:feyge(菲戈) 
    你得网站做得非常好,很是佩服!
    能否告诉一下你的文章系统生成静态页面的思路吗?
      

  7. $fp=fopen("index.tmp","w");
    fputs($fp,"$msg");
    fclose($fp);
    copy("index.tmp","index.html");
    unlink("index.html");
      

  8. 如果你只是想创建一个文件,用w_baggio的方法就可以了。
    但是通常情况下,我们需要对建立的文件进行局部操作,例如我建立的top系统
    。所就要用到我编写的下面几个函数
    不用我解释了吧,你应该能明白的。
    其中lineup函数也可以用来删除,只要将更新想换成""(空串)
    我就先不给注释了,需要我在加
    <?php
    function lineins($file,$line,$line_no)

    $line_no=$line_no-1;
    $upstr="";
    $buffer=file($file);
    if ($line_no<0 || $line_no>count($buffer))  return False;
    $line_end=(eregi("\\\r\\\n",$buffer[0]))?"\r\n":"\n"; 
    if ($line != "") $buffer[$line_no]=$line.$line_end.$buffer[$line_no]; 
    else $buffer[$line_no]="";
    $upstr=str_replace($line_end,"\n",implode("",$buffer));
    $fp=@fopen($file,"w+"); 
    if(!$fp) return False;
    fputs($fp,$upstr); 
    fclose($fp); 
    return True; 
    }
    function lineup($file,$line,$line_no)

    $line_no=$line_no-1;
    $upstr="";
    $buffer=file($file);
    if ($line_no<0 || $line_no>count($buffer))  return False;
    $line_end=(eregi("\\\r\\\n",$buffer[0]))?"\r\n":"\n"; 
    if ($line != "") $buffer[$line_no]=$line.$line_end; 
    else $buffer[$line_no]="";
    $upstr=str_replace($line_end,"\n",implode("",$buffer));
    $fp=@fopen($file,"w+"); 
    if(!$fp) return False;
    fputs($fp,$upstr); 
    fclose($fp); 
    return True; 
    } function linedel($file,$line_no)

    $line_no=$line_no-1;
    $upstr="";
    $buffer=file($file);
    if ($line_no<0 || $line_no>count($buffer))  return False;
    $line_end=(eregi("\\\r\\\n",$buffer[0]))?"\r\n":"\n"; 
    $buffer[$line_no]="";
    $upstr=str_replace($line_end,"\n",implode("",$buffer));
    $fp=@fopen($file,"w+"); 
    if(!$fp) return False;
    fputs($fp,$upstr); 
    fclose($fp); 
    return True; 
    }  ?>几点说明:
    1,这个程序只适合编辑文本文件(txt html xml php asp jsp ...)
    2,我没有写指定字符串的替换,因为在实际使用中,用处不大,由于文本文件的每一行都不是很长,直接换行要比换串更优
    3,\r\n被替换成\n,不换的结果自己试试就知道了。
    4,我假设你欲更改的文件已经存在,所以没做不存在的处理。(这么多天才发,希望没耽误你!呵呵!)
      

  9. $file ,待编辑文件(字符串)
    $line_on要编辑的行号(整数)
    $line要插入/更改的内容(字符串)
      

  10. 非常感谢各位!
    我已经做了不少实验,关键是我一开始没想到用copy()函数,比如copy(index.tpl,"2003010601.html")生成目标文件,然后使用fins提供的函数对目标文件进行操作能够实现我的想法。
      

类似问题 »