首页 > 编程技术 > php

php 生成html文件方法

发布时间:2016-11-25 16:30

下面一段生成html文件类是一款用php的fopen生成html 静态文件的方法好,好了费话不说多了我们来看看吧。

class html
{
    var $dir;
    var $rootdir;
    var $name;
    var $dirname;
    var $url;
    var $time;
    var $dirtype;
    var $nametype;

    function html($nametype='name',$dirtype='year',$rootdir='html')
    {
        $this->setvar($nametype,$dirtype,$rootdir);
    }

    function setvar($nametype='name',$dirtype='year',$rootdir='html')
    {
      $this->rootdir=$rootdir;
      $this->dirtype=$dirtype;
      $this->nametype=$nametype;
    }

    function createdir($dir='')
    {
        $this->dir=$dir?$dir:$this->dir;

        if (!is_dir($this->dir))
        {
            $temp = explode('/',$this->dir);
            $cur_dir = '';
            for($i=0;$i<count($temp);$i++)
            {
                $cur_dir .= $temp[$i].'/';
                if (!is_dir($cur_dir))
                {
                @mkdir($cur_dir,0777);
                }
            }
        }
    }

    function getdir($dirname='',$time=0)
    {
        $this->time=$time?$time:$this->time;
        $this->dirname=$dirname?$dirname:$this->dirname;

        switch($this->dirtype)
        {
        case 'name':
        if(empty($this->dirname))
           $this->dir=$this->rootdir;
        else
           $this->dir=$this->rootdir.'/'.$this->dirname;
        break;
        case 'year':
        $this->dir=$this->rootdir.'/'.date("Y",$this->time);
        break;

        case 'month':
        $this->dir=$this->rootdir.'/'.date("Y-m",$this->time);
        break;

        case 'day':
        $this->dir=$this->rootdir.'/'.date("Y-m-d",$this->time);
        break;
        }

        $this->createdir();

        return $this->dir;
    }

    function geturlname($url='')
    {
        $this->url=$url?$url:$this->url;

        $filename=basename($this->url);
        $filename=explode(".",$filename);
        return $filename[0];
    }

    function geturlquery($url='')
    {
        $this->url=$url?$url:$this->url;

        $durl=parse_url($this->url);
        $durl=explode("&",$durl[query]);
        foreach($durl as $surl)
        {
          $gurl=explode("=",$surl);
          $eurl[]=$gurl[1];
        }
        return join("_",$eurl);
    }

    function getname($url='',$time=0,$dirname='')
    {
        $this->url=$url?$url:$this->url;
        $this->dirname=$dirname?$dirname:$this->dirname;
        $this->time=$time?$time:$this->time;

        $this->getdir();

        switch($this->nametype)
        {
        case 'name':
        $filename=$this->geturlname().'.htm';
        $this->name=$this->dir.'/'.$filename;
        break;

        case 'time':
        $this->name=$this->dir.'/'.$this->time.'.htm';
        break;

        case 'query':
        $this->name=$this->dir.'/'.$this->geturlquery().'.htm';
        break;

        case 'namequery':
        $this->name=$this->dir.'/'.$this->geturlname().'-'.$this->geturlquery().'.htm';
        break;

        case 'nametime':
        $this->name=$this->dir.'/'.$this->geturlname().'-'.$this->time.'.htm';
        break;

        }
        return $this->name;
    }

    function createhtml($url='',$time=0,$dirname='',$htmlname='')
    {
        $this->url=$url?$url:$this->url;
        $this->dirname=$dirname?$dirname:$this->dirname;
        $this->time=$time?$time:$this->time;
     
        if(empty($htmlname))
            $this->getname();
        else
            $this->name=$dirname.'/'.$htmlname;

        $content=file($this->url) or die("Failed to open the url ".$this->url." !");;
        $content=join("",$content);
        $fp=@fopen($this->name,"w") or die("Failed to open the file ".$this->name." !");
        if(@fwrite($fp,$content))
        return true;
        else
        return false;
        fclose($fp);
    }

    function deletehtml($url='',$time=0,$dirname='')
    {
        $this->url=$url?$url:$this->url;
        $this->time=$time?$time:$this->time;

        $this->getname();

        if(@unlink($this->name))
        return true;
        else
        return false;
    }

    /**
     * function::deletedir()
     * 删除目录
     * @param $file 目录名(不带/)
     * @return
     */
     function deletedir($file)
     {
        if(file_exists($file))
        {
            if(is_dir($file))
            {
                $handle =opendir($file);
                while(false!==($filename=readdir($handle)))
                {
                    if($filename!="."&&$filename!="..")
                      $this->deletedir($file."/".$filename);
                }
                closedir($handle);
                rmdir($file);
                return true;
            }
            else
            {
                unlink($file);
            }
        }
    }

}

php调用google在线翻译功能

从中文到英语

class Google_API_translator {


public $out = "";

    function translate() {
        $this->out = "";
        $text = urlencode("计算机");//要翻译的单词

        $google_translator_url = "http://translate.google.com/translate_a/t?client=t&text=".$text."&sl=zh_CN&tl=en";

        echo $google_translator_url;
        $gphtml = $this->postPage(array("url" => $google_translator_url));

        $this->out = $gphtml;

return $this->out;
    }
    function postPage($opts) {
        $html = "";

if($opts["url"] != "") {
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $opts["url"]);

            $html = curl_exec($ch);

 

if(curl_errno($ch)) $html = "";
            curl_close ($ch);
        }

return $html;
    }
}

$g = new Google_API_translator();

$g->translate();

从英语到中文

class Google_API_translator {


public $out = "";

    function translate() {
        $this->out = "";
        $text = urlencode("computer");//要翻译的单词

        $google_translator_url = "http://translate.google.com/translate_a/t?client=t&text=".$text."&sl=en&tl=zh_CN";

//拼凑google翻译的api url         
        $gphtml = $this->postPage(array("url" => $google_translator_url));

        $this->out = $gphtml;

return $this->out;
    }
    function postPage($opts) {
        $html = "";

if($opts["url"] != "") {
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $opts["url"]);

            $html = curl_exec($ch);

 

if(curl_errno($ch)) $html = "";
            curl_close ($ch);
        }

return $html;
    }
}

$g = new Google_API_translator();

$g->translate();

很完美,返回的结果中没有任何编码问题。从google返回的中文编码完全正确。

我们来看看用php写的一款编码转换程序代码哦,把gbk,utf-8之间互转等。

function phpUnescape_no($source) {
    $decodedStr = "";
    $pos = 0;
    $len = strlen ($source);
    while ($pos < $len) {
        $charAt = substr ($source, $pos, 1);
        if ($charAt == '%') {
            $pos++;
            $charAt = substr ($source, $pos, 1);
            if ($charAt == 'u') {
                // we got a unicode character
                $pos++;
                $unicodeHexVal = substr ($source, $pos, 4);
                $unicode = hexdec ($unicodeHexVal);
                $entity = "&#". $unicode . ';';
                $decodedStr .= utf8_encode ($entity);
                $pos += 4;
            }
            else {
                // we have an escaped ascii character
                $hexVal = substr ($source, $pos, 2);
                $decodedStr .= chr (hexdec ($hexVal));
                $pos += 2;
            }
        } else {
            $decodedStr .= $charAt;
            $pos++;
        }
    }
    return $decodedStr;
}

 

//////////////////////////////////////////////////////////////////////

function phpUnescape($escstr){
  preg_match_all("/%u[0-9A-Za-z]{4}|%.{2}|*|[0-9a-zA-Z.+-_]+/",$escstr,$matches); //prt($matches);
  $ar = &$matches[0];
  $c = "";
  foreach($ar as $val){
  if (substr($val,0,1)!="%") { //如果是字母数字+-_.的ascii码
      $c .=$val;
  }
  elseif (substr($val,1,1)!="u") { //如果是非字母数字+-_.的ascii码
    $x = hexdec(substr($val,1,2));
      $c .=chr($x);
  }
  else { //如果是大于0xFF的码
    $val = intval(substr($val,2),16);
    if($val < 0x7F){        // 0000-007F
      $c .= chr($val);
    }elseif($val < 0x800) { // 0080-0800
      $c .= chr(0xC0 | ($val / 64));
      $c .= chr(0x80 | ($val % 64));
    }else{                // 0800-FFFF
       $c .= chr(0xE0 | (($val / 64) / 64));
       $c .= chr(0x80 | (($val / 64) % 64));
       $c .= chr(0x80 | ($val % 64));
     }
  }
  }
  return UTFtoGBK($c);
}

function UTFtoGBK($CS){
 $CodeObj = new Chinese("UTF8","GBK");
 return $CodeObj ->Convert($CS);
}


function phpEscape($str){
 $returnStr = "";
 if (@function_exists('mb_convert_encoding')){
  $returnStr = phpEscape_yes($str);
 }
 else{
  $returnStr = phpEscape_no($str);
 }
 return $returnStr;
}

function phpEscape_yes($string, $encoding = 'GBK') {
  $return = '';

  for ($x = 0; $x < mb_strlen($string, $encoding); $x ++) {
    $str = mb_substr($string, $x, 1, $encoding);
    if (strlen($str) > 1) {
      $return .= '%u' . strtoupper(bin2hex(mb_convert_encoding($str, 'UCS-2', $encoding)));
    } else {
      $return .= '%' . strtoupper(bin2hex($str));
    }
  }
  return $return;
}

function phpEscape_no($str){
    preg_match_all("/[x80-xff].|[x01-x7f]+/",$str,$newstr);
    $ar = $newstr[0];
    foreach($ar as $k=>$v){
        if(ord($ar[$k])>=127){
   $tmpString=bin2hex(GBKtoUCS2($v));
            if (!eregi("WIN",PHP_OS)){
                $tmpString = substr($tmpString,2,2).substr($tmpString,0,2);
            }
            $reString.="%u".$tmpString;
        } else {
            $reString.= rawurlencode($v);
        }
    }
    return $reString;
}


function GBKtoUCS2($CS){
 $CodeObj = new Chinese("GBK","UTF8");
 return utf8ToUnicode($CodeObj ->Convert($CS));
}


function utf8ToUnicode($str,$order="big")
{
  $ucs2string ="";
    $n=strlen($str);
    for ($i=0;$i<$n ;$i++ ) {
  $v = $str[$i];
  $ord = ord($v);
  if( $ord<=0x7F){ //  0xxxxxxx 
     if ($order=="little") {
       $ucs2string .= $v.chr(0);
   }
   else {
       $ucs2string .= chr(0).$v;
   }
  }
  elseif ($ord<0xE0 && ord($str[$i+1])>=0x80) {  //110xxxxx 10xxxxxx
   $a = (ord($str[$i]) & 0x3F )<<6;
   $b =  ord($str[$i+1]) & 0x3F ;
   $ucsCode = dechex($a+$b);   //echot($ucsCode);
   $h = intval(substr($ucsCode,0,2),16);
   $l  =  intval(substr($ucsCode,2,2),16);
   if ($order=="little") {
       $ucs2string   .= chr($l).chr($h);
   }
   else {
        $ucs2string   .= chr($h).chr($l);
   }
   $i++;
  }elseif ($ord<0xF0  && ord($str[$i+1])>=0x80  && ord($str[$i+2])>=0x80) { //1110xxxx 10xxxxxx 10xxxxxx
      $a = (ord($str[$i]) & 0x1F)<<12;    
   $b = (ord($str[$i+1]) & 0x3F )<<6;
   $c =  ord($str[$i+2]) & 0x3F ;
   $ucsCode = dechex($a+$b+$c);   //echot($ucsCode);
   $h = intval(substr($ucsCode,0,2),16);
   $l  =  intval(substr($ucsCode,2,2),16);
   if ($order=="little") {
       $ucs2string   .= chr($l).chr($h);
   }
   else {
        $ucs2string   .= chr($h).chr($l);
   }  
   $i +=2;
  }
    }
 return $ucs2string;  
}


////////////////////////////////////////////////////////

function unescapeFuncMake($Txt){
 if ($Txt[2]!="*") return $Txt;
 $ETxt = "";
    $MTxt = "egy+nb@QwXvCWjKPRxVzDl/h7EOMtSa9f6*FpNr81i_0kqdG2LBcuZIAJYo34m-sT%5.UH3SYZ0hzt/y@qDTNECf1BpujiO.X6ks+oIR8GPVg9wbm%xJvKLWrn*F4HAe-QladM27Uc5_";
 $TTxtnum = substr($Txt,0,2);
 $TTxt = substr((substr($MTxt,70).substr($MTxt,70)),$TTxtnum);
 for ($ii=3; $ii<strlen($Txt); $ii++){
  $w = ($ii-3)%10;
  $k = strpos($TTxt,$Txt[$ii],$w)-$w;
  $ETxt .= $MTxt[$k];
 }
 return phpUnescape($ETxt);
}

 

function escapeFuncMake($Txt){
 if ($Txt=="" || $Txt[2]=="*") return $Txt;
 $MTxt = "egy+nb@QwXvCWjKPRxVzDl/h7EOMtSa9f6*FpNr81i_0kqdG2LBcuZIAJYo34m-sT%5.UH3SYZ0hzt/y@qDTNECf1BpujiO.X6ks+oIR8GPVg9wbm%xJvKLWrn*F4HAe-QladM27Uc5_";
 $BTxt = phpEscape($Txt);
 $TTxt = floor(mt_rand(0,50));
 $ETxt = $TTxt.($TTxt>9?"*":"**");
 for ($ii=0; $ii<strlen($BTxt); $ii++){
  $k = strpos($MTxt,$BTxt[$ii])+($ii%10);
  $ETxtstr = substr((substr($MTxt,70).substr($MTxt,70)),$TTxt);
  $ETxt .= $ETxtstr[$k];
 }
 return $ETxt;
}

提供一款检查php表单检证与检查效果代码。

function validate($value,$onoff=0,$type=3,$len=100,$msg='填写错误') {


if(trim($value) != ""){    //如果有内容  

if(!is_int($len))
exit("<script language=javascript>alert('长度参数不是数字');</script>");

preg_match_all("/[xa0-xff]?./",$value,$arr); //中英文混排算字符串长度
$qswhLen_v=count($arr[0]);   
if($qswhLen_v> $len)
        {
            exit("<script language=javascript>alert('".$msg."\n长度错误!');</script>");
 
        }   
      
if ($type==0){  //类型为0的话 检查数据是否为数字
 if(!eregi('^[0-9]+$', $value)){
  exit("<script language=javascript>alert('".$msg."\n必须是数字!');</script>");
        }      
}
else if ($type==1){   //类型为1的话 检查数据是否为字母
 if(!eregi('^[a-zA-Z]+$',$value)){
        exit("<script language=javascript>alert('".$msg."\n必须是字母!');</script>");
        }
}
else if ($type==2){ //类型为2的话 检查数据是否为中文
 if(!eregi("^[".chr(0xa1)."-".chr(0xff)."]+$",$value)){
        exit("<script language=javascript>alert('".$msg."\n必须是中文!');</script>");
        }
}
else if ($type==3){ //类型为3的话 检查数据是否为字母和数字
 if(!eregi('^[0-9a-zA-Z]+$',$value)){
        exit("<script language=javascript>alert('".$msg."\n必须是字母和数字!');</script>");
        }
}
else if ($type==4){ //类型为4的话 email检查
 if(!eregi("^[_.0-9a-zA-Z-]+@([0-9a-zA-Z_-]+.)+[a-zA-Z]$", $value)){
        exit("<script language=javascript>alert('".$msg."\n格式错误!');</script>");
        }
}
else if ($type==5){ //类型为5的话 日期格式检查
 if(!eregi('^[1-2]{1}[0-9]{3}-[0-9]{2}-[0-9]{2}',$value)){
        exit("<script language=javascript>alert('".$msg."\n格式错误!');</script>");
        }
}
else if ($type==6){ //类型为6的话 身份证号码格式检查
 if(!preg_match('/(^([d]{15}|[d]{18}|[d]{17}x)$)/',$value)){
        exit("<script language=javascript>alert('".$msg."\n格式错误!');</script>");
        }
}
else if ($type==7){ //类型为7的话 电话号码格式检查
 if(!preg_match("/^(((d{3}))|(d{3}-))?((0d{2,3})|0d{2,3}-)?[1-9]d{6,7}$/",$value)){
        exit("<script language=javascript>alert('".$msg."\n格式错误!');</script>");
        }
}
else if ($type==8){ //类型为8的话 邮编格式检查
 if(!preg_match("/^[1-9]d{5}$/",$value)){
        exit("<script language=javascript>alert('".$msg."\n格式错误!');</script>");
        }
}
else if ($type==9){ //类型为9的话 url地址格式检查
 if(!preg_match("/^http://[A-Za-z0-9]+.[A-Za-z0-9]+[/=?%-&_~`@[]':+!]*([^<>""])*$/",$value)){
        exit("<script language=javascript>alert('".$msg."\n格式错误!');</script>");
        }
}
else if ($type==10){ //类型为10的话 无限制

}else{
echo "<script language=javascript>alert('类别错误');</script>";
exit;
}  
       
        }else{
  if($onoff!=0){
echo "<script language=javascript>alert('".$msg."\n请添写".$msg."');</script>";
        exit;
        }
}

}

本是一款大家常用的mysql数据库类哦,下载下去看看吧。

class mySqlClass {//定义整个数据库访问类 mySqlClass
var $querynum = 0;//查询次数变量
 
//打开服务器的连接------------------------------------------------------------------------------------------------------// 
 function connect($dbhost, $dbuser, $dbpw, $dbname = '', $pconnect = 0) {
  //mysql_connect -- 打开一个到 MySQL 服务器的连接
  //mysql_pconnect --  打开一个到 MySQL 服务器的持久连接
  //mysql_pconnect() 和 mysql_connect() 非常相似,但有两个主要区别。
  //首先,当连接的时候本函数将先尝试寻找一个在同一个主机上用同样的用户名和密码已经打开的(持久)连接,如果找到,则返回此连接标识而不打开新连接。
  //其次,当脚本执行完毕后到 SQL 服务器的连接不会被关闭,此连接将保持打开以备以后使用(mysql_close() 不会关闭由 mysql_pconnect() 建立的连接)。
  //判断是否开启持久连接设置,开启则使用持久连接,未开启则使用一般连接
  if($pconnect) {
   if(!@mysql_pconnect($dbhost, $dbuser, $dbpw)) {
    $this->halt('1');
   }
  } else {
   if(!@mysql_connect($dbhost, $dbuser, $dbpw)) {
    $this->halt('1');
   }
  }
//设置字符编码如果数据库版本大于4.1且全局变量中字符集参数不为空---------------------------------------------------------//
  if($this->version() > '4.1') {
   //$charset = 'gbk';
   $charset = 'utf-8';
   $dbcharset = '';
   if(!$dbcharset && in_array(strtolower($charset), array('gbk', 'big5', 'utf-8'))) {
    $dbcharset = str_replace('-', '', $charset);
   }
//mysql_query -- 发送一条 MySQL 查询
//设置NAMES参数为相应字符集参数值,避免PHP读取mysql数据库时出现中文乱码
   if($dbcharset) {
    mysql_query("SET character_set_connection=$dbcharset, character_set_results=$dbcharset, character_set_client=binary");
   }
//如果数据库版本大于5.0设置sql_mode参数为空
   if($this->version() > '5.0.1') {
    mysql_query("SET sql_mode=''");
   }
  }
  if($dbname) {//如果数据库名存在
   //mysql_select_db -- 选择 MySQL 数据库
   //如果选择数据库未成功  
   mysql_select_db($dbname);
  }
 }

//mysql_select_db -- 选择 MySQL 数据库---------------------------------------------------------------------//
 function select_db($dbname) {
  return mysql_select_db($dbname);
 }

//读取一条数据记录函数---------------------------------------------------------------------//
  //mysql_fetch_array --  从结果集中取得一行作为关联数组,或数字数组,或二者兼有
  //mysql_fetch_array() 中可选的第二个参数 result_type 是一个常量,可以接受以下值:MYSQL_ASSOC,MYSQL_NUM 和 MYSQL_BOTH。
  //MYSQL_ASSOC 返回的数据列使用字段名作为数组的索引名。 
  //MYSQL_BOTH 返回的数据列使用字段名及数字索引作为数组的索引名。 
  //MYSQL_NUM 返回的数据列使用数字索引作为数组的索引名。索引从 0 开始,表示返回结果的第一个字段。
 function fetch_array($query, $result_type = MYSQL_ASSOC) {
  return mysql_fetch_array($query, $result_type);
 }
 
//查询数据库函数---------------------------------------------------------------------// 
 function query($sql, $type = '') {
  $func = $type == 'UNBUFFERED' && @function_exists('mysql_unbuffered_query') ?
   'mysql_unbuffered_query' : 'mysql_query';
  if(!($query = $func($sql)) && $type != 'SILENT') {
   $this->halt('0');
  }
        //查询次数+1
  $this->querynum++;
  //返回查询结果资源
  return $query;
 }

//返回影响记录数---------------------------------------------------------------------// 
//如果该函数成功执行,将返回记录行数;如果失败,将返回“-1”。
 function affected_rows() {
  return mysql_affected_rows();
 }

//返回上一个 MySQL 操作产生的文本错误信息---------------------------------------------// 

 function error() {
  return mysql_error();
 }

//返回上一个 MySQL 操作产生的文本错误信息 整数型态 ------------------------------------//

 function errno() {
  return intval(mysql_errno());
 }

//mysql_result -- 返回结果集中的字段值---------------------------------------------//

 function result($query, $row) {
  $query = @mysql_result($query, $row);
  return $query;
 }

//mysql_num_rows -- 取得结果集中行的数目---------------------------------------------//

 function num_rows($query) {
  $query = mysql_num_rows($query);
  return $query;
 }

//mysql_num_fields -- 取得结果集中字段的数目---------------------------------------------//

 function num_fields($query) {
  return mysql_num_fields($query);
 }
 
//mysql_free_result -- 释放所使用的结果内存---------------------------------------------// 

 function free_result($query) {
  return mysql_free_result($query);
 }

//mysql_insert_id -- 取得上一步 INSERT 操作产生的 ID---------------------------------------------//

 function insert_id() {
  $id = mysql_insert_id();
  return $id;
 }

//mysql_fetch_row -- 从结果集中取得一行作为数值型数组---------------------------------------------//

 function fetch_row($query) {
  $query = mysql_fetch_row($query);
  return $query;
 }

//mysql_field_name -- 取得结果中指定字段的字段名---------------------------------------------//

 function field_name($query,$num=0){
  return mysql_field_name($query,$num);
 }
 
//mysql_fetch_field -- 从结果集中取得列信息并作为对象返回 $num=0 表示第一个字段-------------------------------// 

 function fetch_fields($query,$num=0) {
  return mysql_fetch_field($query,$num);
 }

//mysql_get_server_info -- 取得 MySQL 服务器信息---------------------------------------------//

 function version() {
  $MySqlVer = mysql_get_server_info();
  if (empty($MySqlVer) || $MySqlVer==""){
   $MySqlVer = $this->result(($this->query("SELECT VERSION()")), 0);
  }
  if (empty($MySqlVer) || $MySqlVer==""){
   $MySqlVer = '0';
  }
  return $MySqlVer;
 }

 
//mysql_close -- 关闭 MySQL 连接---------------------------------------------------------------------// 
 
 function close() {
  return @mysql_close();
 }


//异常处理函数 halt ---------------------------------------------------------------------//

 function halt($mess) {
  global $DataBaseBadFlag;
  //$dberror = $this->error();
  //$dberrno = $this->errno();  //1114人员连接上限
  if ($mess=="1"){
   if ($DataBaseBadFlag!=1){
    echo("<meta http-equiv='refresh'content=0;URL='pagedataerr.php'>");
   }
   else{
    if (!@function_exists('phpEscape')){
     require("escape.php");
    }
    echo phpEscape("Lock = false;location.href='pagedataerr.php';");
   }
   exit();
  }
  else{
   return false;
  }
 }
}

标签:[!--infotagslink--]

您可能感兴趣的文章: