• 一個常用的phpclass類


    <?
    class myclass
    {
     
    var $temp_db;
     
     
    var $files=array();            //模板文件名
     var $file_ext=".htm";          //模板文件後輟
     var $file_dir="template";      //模板文件目錄
     
     
    var $unknown="remove";         //若沒有找到替換的變量的處理方法
                                    //del 刪除變量   undo 保持不變  comment 替換為注釋

                                                                        
     
    var $halt_on_error="yes";       //在發生錯誤時停止程序
     
     
    var $error="";                 //最後一個錯誤內容
     
     
    var $vars=array();              //存放元素索引
     var $vals=array();              //存放元素值
                                                                           
     
     
    function myclass($dir="",$ext="")
     {
      
    if($dir)
         
    $this->file_dir=$dir;
        
    if($ext)
         
    $this->file_ext=$ext;
     }

    //================連接數據庫
     
     
    function con($host,$user,$psw)
     {
      
    if(!@mysql_connect($host,$user,$psw))
        {
         
    $this->showmes("<font color=\"#FF0000\"><ul><li>無法連接數據庫!</ul></li></font>");
         exit();
        }
     }

    //================選擇數據庫
     function close()
     {
      
    return mysql_close();
     } 
     
    //================選擇數據庫 
     
     
    function selectdb($dbname)
     {
      
    if(!@mysql_select_db($dbname))
        {
         
    $this->showmes("<font color=\"#FF0000\">無法連接數據庫!</font>");
         exit();    
        }
     }

    //================連接選擇數據庫 
     
     
    function c_all($host,$user,$psw,$dbname)
     {
      
    $this->con($host,$user,$psw);
        
    $this->selectdb($dbname);
        
    mysql_query("SET NAMES UTF8");
     }

    //================執行SQL查詢
     
     
    function query($query)
     {
      
    return mysql_query($query);
     }

    //================獲取查詢結果
     
     
    function fetch_arr($query)
     {
      
    return mysql_fetch_array($query);
     } 
     
     
    function fetch_row($query)
     {
      
    return mysql_fetch_row($query);
     } 

    //================獲取結果數目
     function num_rows($query)
     {
      
    return mysql_num_rows($query);
     }

    //================獲取結果數目
     function errno()
     {
      
    return mysql_errno();
     }
     
    //================輸出錯誤
     
     
    function wrong($mes)
     {
      
    $this->error=$mes;
        
    echo "<font color=\"#FF0000\">".$mes."</font>";
        
        
    if($this->halt_on_error=="yes")
         
    exit();
     }
     
    //================輸出信息
     function showmes($mes)
     {
      
    $f=array("f1"=>"showmessage");
        
    $this->setfile($f);
        
    $this->setvars("message",$mes);
        
    $this->replace($f);
        
    $this->p($f);
     }

    //================模板處理   模板數據庫
     
     
    function maketemp_db($name)
     {
      
    $tag_name=str_replace(",","','",$name);
      
    $query="select * from td_sh_temp where tag_name in('$tag_name')";
        
    $vars=explode(",",$name);
        
    $res=$this->query($query);
      
    for($i=0;$i<sizeof($vars);$i++)
        {
       
    $x=$this->fetch_arr($res);
         
    $this->temp_db[$x['tag_name']]="<!-- ".$x['tag_name']." -->\n".$x['tag_value']."\n<!-- /".$x['tag_name']." -->\n\n";
        }
     }

    //******************************************** 
    //================模板處理   模板文件

     //-----------------在$vars和$vals中設定變量
        //若有多個變量設置,則設置在$handle數組中 

     function setvars($handle,$value="")
     {
      
    if(!is_array($handle))
        {
         
    if($value=="")
         {
          
    $this->wrong("變量".$handle."的值為空!");
            
    return false;
         }
         
    $this->vars[$handle]=$handle;
         
    $this->vals[$handle]=$value;
        }
        
    else
        {
         
    reset($handle);
         
    while(list($k,$v)=each($handle))
         {
          
    $this->vars[$k]=$k;
            
    $this->vals[$k]=$v;
         }
        }
     }

     
    //-----------------設置模板文件名
     function filename($file)
     {
        
    $filename=$this->file_dir."/".$file.$this->file_ext;
        
    return $filename;
     }
     
     
    //-----------------將文件名存放在數組$files中
        //若有多個文件,則設置在$handle數組中 

     function setfile($handle,$file="")
     {
      
    if(is_array($handle))
        {
         
    while(list($k,$v)=each($handle))
         {
          
    $this->files[$k]=$this->filename($v);
         }
        }
        
    else
        {
         
    if($file=="")
         {
          
    $this->wrong("文件名為空!");
         }
         
    else
         {
          
    $this->files[$handle]=$this->filename($file);
         }
        }
     }
     
     
    //------------------讀取變量$file中$handle對應的文件,將存放在數組$vars和$vals中
     function loadfile($handle)
     {
      
    if(!is_array($handle))
        {
         
    if(isset($this->vars[$handle])&&isset($this->vals[$handle]))
          
    return true;
         
    if(!isset($this->files[$handle])) //沒有設定$handle對應的文件
         {
          
    $this->wrong("句柄".$handle."沒有設置!");
         }
         
    else
         {
          
    $f=@file($this->files[$handle]);  //讀入文件
          $f=@implode("",$f);
          
    if(empty($f))
          {
           
    $this->wrong("文件".$this->files[$handle]."為空或者不存在!");
             
    return false;
          }
          
    $this->setvars($handle,$f);
          
    return true;
         }
        }
        
    else
        {
         
    while(list($k,$v)=each($handle))
         {
          
    $this->loadfile($k);
         }
        }
     }

     
    //-----------------變量替換1
     function rep($handle)
     {
         
    $str=$this->vals[$handle];
         
    reset($this->vars);
         
    reset($this->vals);
         
    while(list($k,$v)=each($this->vars))
         {
          
    $str=str_replace("{*".$this->vars[$k]."*}",$this->vals[$k],$str);
          
    $str=str_replace("{**".$this->vars[$k]."**}",$this->vals[$k],$str);        
         }
         
    return $str
     }
     
     
    //-----------------變量替換2
     function replace($handle,$target="")
     {
        
    $this->loadfile($handle);
        
    if(!is_array($handle))
        {
         
    $str=$this->rep($handle);

       
    $this->setvars($target,$str);
        }
        
    else
        {
         
    reset($handle);
         
    while(list($k,$v)=each($handle))
         {
          
    $str=$this->rep($k);
            
    $this->setvars($k,$str);
         }
        }
     }
     
     
    //-----------------塊變量替換
     function block_rep($s_b_name,$handle//$s_b_name 表示原文件中的Block name ,$handle 表示設置後的替換名稱
     {
      
    $str = $this->rep($s_b_name);
        
        
    if(empty($this->vals[$handle]))
          
    $repped = "";
        
    else
          
    $repped = $this->vals[$handle];
            
        
    $repped .= $str;
        
    $this->setvars($handle,$repped);
     } 
      
     
    //-----------------刪除無法替換的內容
     function rem($str)
     {
      
    $str=eregi_replace("\{\*[_a-z]+\*\}","&nbsp;",$str);
      
    $str=eregi_replace("\{\*\*[_0-9a-z]+\*\*\}","",$str);    
        
    return $str;
     }
         
     
    //-----------------顯示 
     function p($target)
     {
      
    if(!is_array($target))
        {
         
    echo $this->rem($this->vals[$target]);
        }
        
    else
        {
         
    while(list($k,$v)=each($target))
         {
          
    echo $this->rem($this->vals[$k])."\n";
         }
        } 
     }
     
     
    //------------------設置 Block
      function setblock($parent,$block_name,$name)  //將$parent中的名稱為$block_name的Block替換成{*$name*}
        {
        
    if(!$this->loadfile($parent))
            {
          
    $this->wrong("無法裝載".$parent."");
          
    return false;
        }

        
    $str=$this->vals[$parent];
        
    $reg = "/<!--\s+Begin $block_name\s+-->(.*)<!--\s+End $block_name\s+-->/sm";
        
    preg_match_all($reg,$str,$m);
        
    $str=preg_replace($reg,"{*$name*}",$str); //置換Block部分為 {*$name*} 形式
                                                  //    $this->setvars($name,$m[1][0]);

            $this->setvars($block_name,$m[1][0]);
        
    $this->setvars($parent,$str);
      }
    }
    ?>

    申明

    非源创博文中的内容均收集自网上,若有侵权之处,请及时联络,我会在第一时间内删除.再次说声抱歉!!!

    博文欢迎转载,但请给出原文连接。

  • 相关阅读:
    SpringMVC传参
    mysql JDBC总结
    sql小总结2
    js中frame的操作问题
    httpclient总结
    C#图解教程读书笔记(第1章 C#和.net框架)
    C#图解教程读书笔记(第15章 委托)
    在Ribbon中,中文换行位置不对怎么办
    代码中设置excel自定义格式为[红色]的处理方法
    VSTO安装部署(完美解决XP+2007)
  • 原文地址:https://www.cnblogs.com/Athrun/p/990156.html
Copyright © 2020-2023  润新知