作为程序员一定要保持良好的睡眠,才能好编程

php 基础函数汇总

发布时间:2017-03-15

php基础函数汇总表


字符串类:

nl2br($str) //把n转换为br

$str="<h1><i>1</i>这是一个标题</h1>";
htmlentiites($string); //把html的代码转换为实体显示  把中文字体也转换了,这是个不好的现象 <h1><i>1</i>è¿�æ�¯ä¸�个æ �é¢�</h1>
htmlspecialchars($str); //<h1><i>1</i>这是一个标题</h1>  

strip_tags($str); //去掉html代码

 
get_magic_quotes_gpc() //返回1或0 与这个方法进行连用,如果系统开启了这个方法,则不要执行addslashes()方法了。否则执行
addslashes($str);     //把 单引号 与双引号 $str 都加上转义字符,进行数据库的安全限制

$str1=addslashes($str);   //1name:jame\'s这是一个标题
echo $str1;
echo "<br>";
echo stripslashes($str1); //1name:jame's这是一个标题
echo stripcslashes($str1); //1name:jame's这是一个标题



strtoLower($str) //转换为小写
strtoUpper($str) //转换为大写
ucfirst($str)  //首字母转换为大写
ucwords($str) //每一个单词首字母都转换为大写
lcfirst($str)  //使第一字母小写


str_repeat($str,length); 返回length个$str个字符串



$_arrStr="a,b,c,d";
explode(",",$_arrStr); 
//使用这个函数,将使用逗号作为分隔条件,分隔$_arrStr字符串,得到数组。
//Array(    [0] => a    [1] => b    [2] => c    [3] => d)  
implode(",",$arr) //得到字符串,使用逗号把$arr 连接成字符串。
join(",",$arr) //和implode()函数是一样的,加入

strlen($_arrStr) //返回字符串的长度

substr($str,0,10); //截取字符串
mb_substr($str,0,10,"utf-8"); //截取中文字


str_replace($str,0,10)
substr_replace($str,0,-4)
mb_substr_replace($str,0,10)    //截取字符串函数

strrev($str) //字符反转

strstr($str,$find)//判断str是否包含find这个字符(str和find都是变量)
stristr($str,$find)//是否包含find这个变量,不区分大小写
strrchr($str,$find) //$find字符串中的最后一次出现
 
strpos($str,$find) //查找find是否在str中出现,如果有返回出现的位置,否则返回 false
stripos(str,$find) //和strpos这个函数是一样的,区别:不区分大小写

strrpos($str,$find) //从后面向前边寻找,找到返回其位置

echo lcg_value()   //生成0-1之间的随机数



//时间
echo "今天:".date("Y-m-d H:i:s");
echo "<br>";
echo "前五天:".date("Y-m-d H:i:s",strtotime("-5 day"));
echo "<br>";
echo date("Y-m-d H:i:s",strtotime("+1 month"));
echo "<br>";

strtotime("+1 day");
strtotime("+1 day");
strtotime("+1 week")
strtotime("+2 month");

strtotime("+2 hours"); //加两个小时


    //请输入你的php代码
        
        
   // echo date("Y-m-d H:i:s",strtotime("-2 day"));    //前两天
    
    
   // echo date("Y-m-d H:i:s",strtotime("-1 week")); // 上个星期
    
   // echo date("Y-m-d H:i:s",strtotime("-1 month")); //上个月
    
 //   echo date("Y-m-d H:i:s",strtotime("-1 hour")); //上一个小时
    
 //   echo date("Y-m-d H:i:s",time()-60);  //上一份钟
        

    //echo date("D");        //Wed
    
   // echo date("t");  //月份中有多少天
    
    
    //echo date("z"); //年份中第多少天  
    
    
    echo date("w");  //星期 星期中的第几天,数字表示  0星期天    3表示第三天 
    
    //var_dump(date("L"));   //是否闰年
    






今天:2017-04-10 12:55:03
前五天:2017-04-05 12:55:03
前下一个月:2017-05-10 12:55:03



strtotime("2017-03-15 17:22:33");

date("Y-m-d H:i:s");


$timeChuo=strtotime("2017-02-15 17:22:33");
echo date("Y-m-d",$timeChuo-3600*24);  //返回时间的前一天

D //表示星期几 Wed
d //这个月的第几天
j // 月份中的第几天,没有前导零
w //今天是这周的第几天  0(表示星期天)到 6(表示星期六)
z //今天是今年的第多少天 
L //是否闰年
t //返回这个月的天数    
     



//操作本地文件

file_get_contents("Path/a.css"); //得到a.css这个文件的内容

file_put_contents("Path/a.css",$content); //写文件 


//写一个文件
$fp=fopen($path."a.txt","w");
fwrite($fp,$content);
fwrite($fp,$content2);
fclose($fp);

//读一个文件:
$handle = fopen("http://www.example.com/", "rb");
$contents = '';
while (!feof($handle)) {
  $contents .= fread($handle, 8192);
}
fclose($handle);


打开model:
r
r+
w
w+
a
a+
b
这几种方式是可以进行组合  wb  w


//计算两个文件的相对路径:
//方法:得到两个文件的绝对路径,然后进行  / 进行分割,得到两个不同的数组,
        然后得到A文件和B文件array_diff_assoc() 通过这个函数得到两个数组不同的交集,并得到个数
        循环一下,得到相对地址
    
    计算出:A文件相当于B文件的相对路径
    
    $a="/a/b/c/d/a.php";
    $b="/a/b/1/2/b.php";
    function fff($fileA,$fileB){
        $path="";
        $tempA=explode("/",$fileA);
        $tempB=explode("/",$fileB);
        $diff=array_diff_assoc($tempA,$tempB);
        $diffSize=count($diff);
        for($i=0;$i<$diffSize-1;$i++){
            $path.="../";
        }
        $path .= implode('/', $diff);    //implode()用于使用指定字符串连接数组元素,此处返回用'/'连接数组元素后的字符串
        return $path;
    }
    echo fff($a,$b);




//解析url地址
$url=$_SERVER['REQUEST_URI'];     
$url_arr=parse_url($url); //得到一个数组 两个key  path  和 query 
parse_str($url_arr['query'],$http); //$http 这个数组
unset($http['page']); //删除对应的参数
echo $url_arr["path"]."?".http_build_query($http);


$file=$_SERVER['SCRIPT_NAME'];
    $file=$_SERVER['PHP_SELF'];
    $file="http://www.looda.com/asp/ff.aspx?a=2134&b=33";

    $temp = parse_url($file);
    $path = $temp['path'];
    //然后再借用pathinfo直接将扩展名取出
    echo pathinfo($path,PATHINFO_EXTENSION)."<br>";
    echo pathinfo($path,PATHINFO_FILENAME )."<br>";
    echo pathinfo($path,PATHINFO_BASENAME)."<br>";
    echo pathinfo($path,PATHINFO_DIRNAME)."<br>";



    $temp = pathinfo($file,PATHINFO_EXTENSION);
    //取出扩展名
    $temp = explode("?",$temp);
    echo $temp[0];



//在不使用临时变量的情况下,交换两个数的变量:
    echo "<br>";
    $a=3;
    $b=9;
    echo "原始a".$a."------b".$b;
    
    $a=$a+$b;
    $b=$a-$b;
    $a=$a-$b;
    echo "原始 a:".$a."------b:".$b;




//读取一个目录
function readdir($dir){
    $_dataArr=array();
    if(is_dir($dir)){
        
        $fp=opendir($dir);
        while($file=readdir($fp)){
            if($file!="." && $file!=".."){
                $_dataArr[]=$file;
                //filesize 文件大小
                //文件扩展名   stristr($fileName,".")
                //filetype  文件类型  文件 or 文件就爱
                //filemtime  文件最后的编辑时间
            }        
        }
        
        
    }else{
        return false;
    }

}







dirname(__FILE__); 得到文件所在的路径



 

解析字符串类

 
    class Parsert{
         private $tpl;
        //构造方法
        
        function __construct($mtpl){
             if(!$this->tpl=file_get_contents($mtpl)){
                echo "ERROR: 模板文件读取错误";
                exit;
            }    
        }
        //定义一个方法来解析普通变量,
        //这里使用private 因为这里只在类里访问
         private function parVal(){
             // 这里使用正则表达式  preg_match() 来匹配,用preg_replace() 来替换
             $pattern='/\{\$([a-zA-Z0-9_]+)\}/';
             if(preg_match($pattern,$this->tpl)){
                 //解释一下    echo \$this->_vars['\\1']
                 //这里的\\1 指的是 正则表达式匹配后的第一个分组的数据
                 //这里的\\1 也可以用$1来替换为  echo \$this->_vars['$1']
              $this->tpl=preg_replace($pattern,"<?php echo \$this->_vars['\\1']?>",$this->tpl);     
             }             
         }
         
         //解析if语句    首先去判断有没有if语句,如果有
         //那么就必须有结束语句,如果没有,就报错,并结束程序
         /*
         {if $变量}   变量的使用的方法 
         
         {else}
         {/if}
         
         */
         
         
     private function parif(){
     $patternif='/\{if\s+\$([a-zA-Z0-9_]+)\}/';
     $patternelse='/\{else\}/';
     $patternendif='/\{\/if\}/';
      if(preg_match($patternif,$this->tpl)){
    
         //判断是否有结尾
         if(preg_match($patternendif,$this->tpl)){
         $this->tpl=preg_replace($patternif,"<?php if(\$this->_vars['\\1']){ ?>",$this->tpl);
        
         //判断是否有else
        if(preg_match($patternelse,$this->tpl)){
         $this->tpl= preg_replace($patternelse,"<?php } else {?>",$this->tpl);                
        }
        //解析结束if
         $this->tpl=preg_replace($patternendif,"<?php }?>",$this->tpl);
        
         
      }else{
         echo "ERROR: if语句没有结束语句 ";
         exit;    
       }             
     }  
     }
     
     
     /*循环嵌套使用方法 */
       private function pariff(){
        $patternif='/\{iff \@([a-zA-Z\-\>]+)\}/';
        $patternelse="/\{iffelse\}/";
        $patternend="/\{\/iff\}/";
        
        
        if(preg_match($patternif,$this->tpl)){
             if(preg_match($patternend,$this->tpl)){
                 $this->tpl=preg_replace($patternif,"<?php if(\$$1){?>",$this->tpl);
                 $this->tpl=preg_replace($patternend,"<?php } ?>",$this->tpl);
                 if(preg_match($patternelse,$this->tpl)){
                   $this->tpl=preg_replace($patternelse,"<?php }else{ ?>",$this->tpl);
                 }
             }else{
                 echo "Error: 内嵌式循环 iff 没有关闭";
                 exit;
             }
            } 
        
      }
     //解析动态注释
     private function parCommon(){
          $pattern='/\{#\}(.*)\{\/#\}/';
      
         //我是php注释,在网页中是看不到的,只有在php文件中才可以看到
         if(preg_match($pattern,$this->tpl)){
           $this->tpl=preg_replace($pattern,"<?php /*\\1*/ ?>",$this->tpl);    
          }      
     }
     
     //解析foreach语句
      
     private function parForeach(){
         $patternForeach='/\{foreach \$([\w]+)\(\$([\w]+),\$([\w]+)\)\}/';
         $patternEndForeach='/\{\/foreach\}/';
         $f_val='/\{@([\w\-\>\+\$]+)\}/';
         $fun_val='/\{@([\w\-\>]+)\s+function=(\"|\')([\w]+)\(\'([\w\-\#\+.@]*)\'\)(\"|\')\}/';
                  
          if(preg_match($patternForeach,$this->tpl)){
               //php echo \$$1
             if(preg_match($patternEndForeach,$this->tpl)){                  
            $this->tpl=preg_replace($patternForeach,"<?php foreach(\$this->_vars['\\1'] as \$\\2=>\$\\3){ ?>",$this->tpl);
             $this->tpl=preg_replace($f_val,"<?php echo \$$1; ?>",$this->tpl);    
             $this->tpl=preg_replace($patternEndForeach,"<?php } ?>",$this->tpl);
             if(preg_match($fun_val,$this->tpl,$all)){
             //  print_r($all);
               if($all[3]=="checkempty"){
               $this->tpl=preg_replace($fun_val,"<?php if(\$$1==\"\"){echo \"$4\";}else{echo \$$1;} ?>",$this->tpl);
               }else{
                   $this->tpl=preg_replace($fun_val,"<?php echo \$$1; ?>",$this->tpl);
               }
             }
     
              }else{
                  echo "ERROR: 没有foreach关闭语句 ";
                  exit;
              }
         }
         
     }
     
     private function parFor(){
          $partterFor='/\{for\s+\@([\w\-\>]+)\(\$([\w]+),\$([\w]+)\)\}/';
          $partterelse='/\{else\}/';
          $partterend='/\{\/for\}/';
          $f_val='/\{@([\w\-\>\+\$]+)\}/';
          if(preg_match($partterFor,$this->tpl)){
              if(preg_match($partterend,$this->tpl)){
                  
                  $this->tpl=preg_replace($partterFor,"<?php foreach(\$$1 as \$\\2=>\$\\3){ ?>",$this->tpl);
                  
                  $this->tpl=preg_replace($partterend,"<?php } ?>",$this->tpl);
                  
                  $this->tpl=preg_replace($f_val,"<?php echo \$$1; ?>",$this->tpl);
                  
                 if(preg_match($partterelse,$this->tpl)){
                     $this->tpl=preg_replace($partterelse,"<?php }else{ ?>",$this->tpl);
                 }
              }else{
                  echo "ERROR: for 循环没有关闭语句 ";
                  exit;
              }
          } 
     }
     
     
     //解析include 
     private function parInclude(){
         //$pattern='/\{\s*include\s+file=\"|\'([\w]+).([\w]+)\"|\'\s*\/\}/';
         //$pattern='/\{\s*include\s+file=\"|\'(.*)\"|\'\s*\/\}/';
         $pattern='/\{\s*include\s+file=(\"|\')(.*)(\"|\')\s*\/\}/';
         if(preg_match($pattern,$this->tpl)){
          
          preg_match($pattern,$this->tpl,$_file);
         //  print_r($_file);
           $infile=$_file[2];
           if(!file_exists($infile)){
            echo "ERROR: $infile 引入的文件不存在";    
            exit;
            }             
           $this->tpl=preg_replace($pattern,"<?php include '\\2' ;?>",$this->tpl);
          
         }
     }
     
        //解析array数组
        
        private function parArray(){
         $pattern='/\{array\s+\$([a-z0-9A-Z\-\>]+)\(\$[a-z0-9A-Z]+,\$[a-z0-9A-Z]+\)\}/';
         
         $patternend='/\{\/array\}/';
         
         
         if(preg_match($pattern,$this->tpl)){
             
             if(preg_match($patternend,$this->tpl)){
                 
               $patternval='/\{\#value\}/';
               $patternval2='/\{\#key\}/';
              
              $this->tpl=preg_replace($pattern,"<?php \$pa=\$this->_vars['\\1']; for(\$i=2;\$i<sizeof(\$this->_vars['\\1']);\$i++){ ?>",$this->tpl);
             
              if(preg_match($patternval,$this->tpl)){
                  
                  $this->tpl=preg_replace($patternval,"<?php echo \$pa[\$i]; ?>",$this->tpl);
                  $this->tpl=preg_replace($patternval2,"<?php echo \$i; ?>",$this->tpl);
                  
              }
              
              $this->tpl=preg_replace($patternend,"<?php }?>",$this->tpl);    
                
                 
             }else{
                 exit("没有array结束标签");
                 
             }     
             
         } 
            
            
        }
         
     
     //解析系统变量
     
     private function parConfig(){
         $pattern='/<!--\$([\w]+)-->/';
         if(preg_match($pattern,$this->tpl)){
          $this->tpl=preg_replace($pattern,"<?php echo \$this->config['\\1']; ?>",$this->tpl);           
         }
         
     } 
        public function common($parfile){
            //解析普通变量           
            $this->parVal();
            //解析if语句
            $this->parif();
            //解析内嵌式if
            $this->pariff();
            //解析php注释
            $this->parCommon();
            //解析For
            $this->parFor();
            //解析foreach
            $this->parForeach();
            //解析include
            $this->parInclude();
            //解析系统变量
            $this->parConfig();
            //解析数组
            $this->parArray();
        
            
            //在这里生成编译文件
            if(!file_put_contents($parfile,$this->tpl)){
                echo "ERROR:生成缓存文件出错";
                exit;
            }
        }
    
        
        //定义一些常用方法
        
         private function checkfunction($bl,$fun,$view){
             $string="";
             if($fun=="checkempty"){
              $string="<?php if(\$$bl==\"\"){echo \"$view\";}else{echo \$$bl;} ?>";    
             }else{
                 $string="<?php echo \$$bl ?>";
             }
             
              return $string;
          
         } 
    }