• 2594阅读
  • 0回复

一个自动生成HTML的类 [复制链接]

上一主题 下一主题
离线cai
 

只看楼主 倒序阅读 0楼 发表于: 2005-01-07
class Shtml

  {

    var $Templet;

    var $DataSource;

    var $Dir;

    var $fileName;

    var $mod;

    var $handle;



    function Shtml($fileName="")

    {

        $this->fileName=$fileName;

        $this->mod="wb";

        $this->handle=false;



        $this->Templet     = "";

        $this->DataSource   = array();

        $this->Dir         = "";

    }

   

    ///   <描述>

    ///   绑定数据源,参数为一数组。

    ///   </描述>

    function BindData($arr)

    {

        $this->DataSource = $arr;

    }

   

    ///   <描述>

    ///   设置文件存放路径。

    ///   </描述>

    function SetDir($dir)

    {

        $this->Dir = $dir;

    }

    function SetFileName($fileName)

    {

        return $this->fileName=$fileName;

    }



    function GetMod()

    {

        return $this->mod;

    }

    function SetMod($mod)

    {

        return $this->mod=$mod;

    }

    function Open()

    {

        if(substr($this->fileName,0,1)=="/")

          $this->fileName = $_SERVER['DOCUMENT_ROOT'] . $this->fileName;

        if($this->handle=fopen($this->fileName, $this->mod))

          return $this->handle;

        else

          return false;

    }

    function Close()

    {

        return fclose($this->handle);

    }

    function Write($content)

    {

        return fwrite($this->handle,$content);

    }

    function MkDir($pathname)

    {

        $currentPath="";

        str_replace("\\","/",$pathname);

        $pathArr = split("/",$pathname);

        if($pathArr[0] == "")     //使用绝对路径

        {

          $currentPath = $_SERVER['DOCUMENT_ROOT'];

        }

        else

        {

          $currentPath = $_SERVER['DOCUMENT_ROOT'] . dirname($_SERVER['PHP_SELF']);

        }

        for($i=0; $i<count($pathArr); $i++)

        {

          if($pathArr[$i]=="")

            continue;
          else

            if(is_dir($currentPath . "/" . $pathArr[$i]))

                $currentPath = $currentPath . "/" . $pathArr[$i];

            else

                mkdir($currentPath = $currentPath . "/" . $pathArr[$i]);

        }

    }



    ///   <描述>

    ///   生成静态文件。

    ///   </描述>

    function Create()

    {

        $tmp = $this->Templet;

        foreach($this->DataSource as $key=>$value)

        {

          $tmp = str_replace("<FIELD_" . $key . ">", $value, $tmp);

        }

        $this->MkDir(dirname($this->fileName));

        $this->Open();

        $this->Write($tmp);

        $this->Close();

    }

  }



  function CreateShtml()

  {

    ob_start("callback_CteateShtml");

  }

  function callback_CteateShtml($buffer)

  {

    $page = intval(@$_REQUEST["page"]);

    $shtml = new Shtml();

    $shtml->SetFileName($_SERVER['DOCUMENT_ROOT'] . dirname($_SERVER['PHP_SELF']) . "/" . basename($_SERVER['PHP_SELF'],".php") . ($page==0 ? "" : "_" . strval($page)) . ".htm");

    $shtml->Templet = $buffer;

    $shtml->Create();

    return $buffer;

  }



演示:

<?
include("include.php");
CreateShtml();

?>
asdfsadfasdfasdfjlkasdfjlksdf
asdfsadfjhsdjlkfsd
asdfjosdfjksdf






付上一个不用类的

function CreateShtml()

  {

    ob_start("callback_CteateShtml");

  }

  function callback_CteateShtml($buffer)

  {

    $page = intval(@$_REQUEST["page"]);

    $fileName = $_SERVER['DOCUMENT_ROOT'] . dirname($_SERVER['PHP_SELF']) . "/" . basename($_SERVER['PHP_SELF'],".php") . ($page==0 ? "" : "_" . strval($page)) . ".htm";

    $fp = fopen($fileName,"wb");

    fwrite($fp,$buffer);

    fclose($fp);

    return $buffer;

  }
快速回复
限100 字节
 
上一个 下一个