zoukankan      html  css  js  c++  java
  • 一個常用的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);
      }
    }
    ?>

    申明

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

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

  • 相关阅读:
    uva 408 Uniform Generator
    Java实现 蓝桥杯VIP 算法提高 栅格打印问题
    Java实现 蓝桥杯VIP 算法提高 栅格打印问题
    Java实现 蓝桥杯VIP 算法提高 栅格打印问题
    Java实现 蓝桥杯VIP 算法提高 打水问题
    Java实现 蓝桥杯VIP 算法提高 打水问题
    Java实现 蓝桥杯VIP 算法提高 打水问题
    Java实现 蓝桥杯VIP 算法提高 打水问题
    Java实现 蓝桥杯VIP 算法提高 不同单词个数统计
    Java实现 蓝桥杯VIP 算法提高 不同单词个数统计
  • 原文地址:https://www.cnblogs.com/Athrun/p/990156.html
Copyright © 2011-2022 走看看