• php常用函数归纳


    php常用函数归纳:

    /**
     * 截取指定长度的字符
     * @param type $string  内容
     * @param type $start 开始
     * @param type $length 长度
     * @return type
     */
    function ds_substing($string, $start=0,$length=80) {
        $string = strip_tags($string);
        $string = preg_replace('/s/', '', $string);
        return mb_substr($string, $start, $length);
    }
    /**
     * 获取当前域名及根路径
     * @return string
     */
    function base_url()
    {
        $request = Request::instance();
        $subDir = str_replace('\', '/', dirname($request->server('PHP_SELF')));
        return $request->scheme() . '://' . $request->host() . $subDir . ($subDir === '/' ? '' : '/');
    }
    /**
     * 写入日志   
     * @param string|array $values  
     * @param string $dir
     * @return bool|int
     */
    function write_log($values, $dir)
    {
        if (is_array($values))
            $values = print_r($values, true);
        // 日志内容
        $content = '[' . date('Y-m-d H:i:s') . ']' . PHP_EOL . $values . PHP_EOL . PHP_EOL;
        try {
            // 文件路径
            $filePath = $dir . '/logs/';
            // 路径不存在则创建
            !is_dir($filePath) && mkdir($filePath, 0755, true);
            // 写入文件
            return file_put_contents($filePath . date('Ymd') . '.log', $content, FILE_APPEND);
        } catch (Exception $e) {
            return false;
        }
    }
    /**
     * curl请求指定url (get)
     * @param $url
     * @param array $data
     * @return mixed
     */
    function curl($url, $data = [])
    {
        // 处理get数据
        if (!empty($data)) {
            $url = $url . '?' . http_build_query($data);
        }
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_HEADER, false);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);//这个是重点。
        $result = curl_exec($curl);
        curl_close($curl);
        return $result;
    }
    
    /**
     * curl请求指定url (post)  
     * @param $url
     * @param array $data
     * @return mixed
     */
    function curlPost($url, $data = [])
    {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        $result = curl_exec($ch);
        curl_close($ch);
        return $result;
    }
    /**
     * 多维数组合并
     * @param $array1
     * @param $array2
     * @return array
     */
    function array_merge_multiple($array1, $array2)
    {
        $merge = $array1 + $array2;
        $data = [];
        foreach ($merge as $key => $val) {
            if (
                isset($array1[$key])
                && is_array($array1[$key])
                && isset($array2[$key])
                && is_array($array2[$key])
            ) {
                $data[$key] = array_merge_multiple($array1[$key], $array2[$key]);
            } else {
                $data[$key] = isset($array2[$key]) ? $array2[$key] : $array1[$key];
            }
        }
        return $data;
    }
    /**
     * 二维数组排序
     * @param $arr
     * @param $keys
     * @param bool $desc
     * @return mixed
     */
    function array_sort($arr, $keys, $desc = false)
    {
        $key_value = $new_array = array();
        foreach ($arr as $k => $v) {
            $key_value[$k] = $v[$keys];
        }
        if ($desc) {
            arsort($key_value);
        } else {
            asort($key_value);
        }
        reset($key_value);
        foreach ($key_value as $k => $v) {
            $new_array[$k] = $arr[$k];
        }
        return $new_array;
    }
    /**
     * 数据导出到excel(csv文件)
     * @param $fileName
     * @param array $tileArray
     * @param array $dataArray
     */
    function export_excel($fileName, $tileArray = [], $dataArray = [])
    {
        ini_set('memory_limit', '512M');
        ini_set('max_execution_time', 0);
        ob_end_clean();
        ob_start();
        header("Content-Type: text/csv");
        header("Content-Disposition:filename=" . $fileName);
        $fp = fopen('php://output', 'w');
        fwrite($fp, chr(0xEF) . chr(0xBB) . chr(0xBF));// 转码 防止乱码(比如微信昵称)
        fputcsv($fp, $tileArray);
        $index = 0;
        foreach ($dataArray as $item) {
            if ($index == 1000) {
                $index = 0;
                ob_flush();
                flush();
            }
            $index++;
            fputcsv($fp, $item);
        }
        ob_flush();
        flush();
        ob_end_clean();
    }
    //生成XML
    function makeXML($data_array){
        $content='<?xml version="1.0" encoding="utf-8"?><urlset>';
        foreach($data_array as $data){
            $content.= create_item($data);
        }
        $content.='</urlset>';
        $fp=fopen('sitemap.xml','w+');
        fwrite($fp,$content);
        fclose($fp);
    }
        /**
         * 加密字符串
         * @param string $str 字符串
         * @param string $key 加密key
         * @param integer $expire 有效期(秒)     
         * @return string
         * ord() 函数返回字符串的首个字符的 ASCII 值。
         */
        public static function encrypt($data,$key,$expire=0) {
            $expire = sprintf('%010d', $expire ? $expire + time():0);
            $key    =   md5($key);
            $data   =   base64_encode($expire.$data);
            $char = "";
            $str = "";
            $x=0;
            $len = strlen($data);
            $l = strlen($key);
            for ($i=0;$i< $len;$i++) {
                if ($x== $l) $x=0;
                $char   .=substr($key,$x,1);
                $x++;
            }
    
            for ($i=0;$i< $len;$i++) {
                $str    .=chr(ord(substr($data,$i,1))+(ord(substr($char,$i,1)))%256);
            }
            return $str;
        }
    
        /**
         * 解密字符串
         * @param string $str 字符串
         * @param string $key 加密key
         * @return string
         */
        public static function decrypt($data,$key) {
            $key    =   md5($key);
            $x=0;
            $len = strlen($data);
            $l = strlen($key);
            $char = "";
            $str = "";
            for ($i=0;$i< $len;$i++) {
                if ($x== $l) $x=0;
                $char   .=substr($key,$x,1);
                $x++;
            }
            for ($i=0;$i< $len;$i++) {
                if (ord(substr($data,$i,1))<ord(substr($char,$i,1))) {
                    $str    .=chr((ord(substr($data,$i,1))+256)-ord(substr($char,$i,1)));
                }else{
                    $str    .=chr(ord(substr($data,$i,1))-ord(substr($char,$i,1)));
                }
            }
            $data = base64_decode($str);
            $expire = substr($data,0,10);
            if($expire > 0 && $expire < time()) {
                return '';
            }
            $data   = substr($data,10);
            return $data;
        }
    //模拟ip
        function get_rand_ip()
        {
          $arr_1 = array("218","218","66","66","218","218","60","60","202","204","66","66","66","59","61","60","222","221","66","59","60","60","66","218","218","62","63","64","66","66","122","211");
          $randarr= mt_rand(0,count($arr_1)-1);
          $ip1id = $arr_1[$randarr];
          $ip2id=  round(rand(600000,  2550000)  /  10000);
          $ip3id=  round(rand(600000,  2550000)  /  10000);
          $ip4id=  round(rand(600000,  2550000)  /  10000);
          return  $ip1id . "." . $ip2id . "." . $ip3id . "." . $ip4id;
        }
    //爬虫函数
        function curl_get($url)
        {
            $ch = curl_init(); 
            if(strpos($url,'https')!==false)
            {
                curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查  
                curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
            }
            curl_setopt($ch, CURLOPT_URL,$url);
            curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 GTB5' );//模拟浏览器
            curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-FORWARDED-FOR:8.8.8.8', 'CLIENT-IP:'.get_rand_ip())); //构造IP 
            curl_setopt($ch, CURLOPT_HEADER, false);
            curl_setopt($ch, CURLOPT_TIMEOUT,30);
            curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);//curl 抓取结果不直接输出
            $out = curl_exec($ch);
            curl_close($ch);
            return $out;
    
        }
        //过滤标签
        function content_format($content){
            $content = str_replace("'",'‘',$content);    
            $content = preg_replace('/</?p[^>]*>/i','<br>',$content);
            $content = preg_replace('/<br[s/br><&nbsp;]*>(s*|&nbsp;)*/i','<br><br>&nbsp;&nbsp;&nbsp;&nbsp;',$content);
    
    
            if (stripos($content,'<table')) {
                
                $content = preg_replace('/(<br>|&nbsp;|s)*(<table[^>]*)>/iU','$2 align=center>',$content);
                $content = preg_replace('/</table>(<br>|s)*/i','</table>',$content);
                $content = str_replace('tdclass','td class',$content);
                $content = str_replace('<table','<table ',$content);
                $content = str_replace('<tdcolspan','<td colspan ',$content);
                $content = preg_replace('/[/center](s|<br>)*/','[/center]',$content);
                $content = preg_replace('/</table>(&nbsp;|s)*([x80-xff]*)/','</table>&nbsp;&nbsp;&nbsp;&nbsp;$2',$content);
                $content = preg_replace('/</table>(&nbsp;|s|<br>)*(</?td|</?tr|</?table)/i','</table>$2',$content);        
            }
            $content = preg_replace('/[center](<br>|s|&nbsp;)*[/center]/','',$content);
            
            
            if (stripos($content,'<style') !== false) {
                $content = preg_replace('/(s|&nbsp;|<br[s/br><&nbsp;]*>)*(<style.*</style>)(s|&nbsp;|<br[s/br><&nbsp;]*>)*/isU','$2',$content);
            }
            $content = preg_replace('/(&nbsp;){4,}s*/','&nbsp;&nbsp;&nbsp;&nbsp;',$content);
            
            $content = preg_replace('/</?br[^>]*>/iU','<br>', $content);
            return $content;
        }
        //创建多层目录
        function mk_dir($dir)
        {
            if ('/' == DIRECTORY_SEPARATOR) {
                $dir = str_replace('\', DIRECTORY_SEPARATOR, $dir);
            } else {
                $dir = str_replace('/', DIRECTORY_SEPARATOR, $dir);
            }
            if (substr($dir, -1) != DIRECTORY_SEPARATOR) {
                $dir = dirname($dir);
            }
            if (file_exists($dir)) {
                return true;
            }
            $dirs = explode(DIRECTORY_SEPARATOR, $dir);
            if (count($dirs)) {
                foreach ($dirs as $dir) {
                    $tdir .= $dir . DIRECTORY_SEPARATOR;
                    if ($tdir == DIRECTORY_SEPARATOR || preg_match('/^[a-z]:(|/)$/i',$tdir)) {
                        continue;
                    }
                    if (!file_exists($tdir)) {
                        if (!@mkdir($tdir, 0777)) {
                            return false;
                        }
                    }
                }
            }
        }
        //文件扩展名
        function getFileExt($filePath)
        {
            return(trim(strtolower(substr(strrchr($filePath, '.'), 1))));
        }
        //压缩图片
        function image_png_size_add($imgsrc,$imgdst,$newwith=960,$newheight=960){ 
          //判断文件大小是否超过既定值,没有直接返回false
          if(!check_filesize($imgsrc,'200')) return false;
          list($width,$height,$type)=getimagesize($imgsrc); 
          $scale = $width/$newwith;
          $new_width = ($scale>1?$width/$scale:$width); 
          $new_height =($scale>1?$height/$scale:$height); 
          switch($type){ 
            case 1: 
              $giftype=check_gifcartoon($imgsrc); 
              if($giftype){ 
                $image_wp=imagecreatetruecolor($new_width, $new_height); 
                $image = imagecreatefromgif($imgsrc); 
                imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); 
                imagejpeg($image_wp, $imgdst,75); 
                imagedestroy($image_wp); 
                return true;
              } 
              break; 
            case 2: 
              $image_wp=imagecreatetruecolor($new_width, $new_height); 
              $image = imagecreatefromjpeg($imgsrc); 
              imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); 
              imagejpeg($image_wp, $imgdst,75); 
              imagedestroy($image_wp); 
              return true;
              break; 
            case 3:  
              $image_wp=imagecreatetruecolor($new_width, $new_height); 
              $image = imagecreatefrompng($imgsrc); 
              imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); 
              imagejpeg($image_wp, $imgdst,75); 
              imagedestroy($image_wp);
              return true;      
              break; 
          } 
        }
        //desription 判断是否文件大小是否超过既定值
        function check_filesize($url,$size='200'){ 
            $filemsg = get_headers($url,true);
            $filesize = intval($filemsg["Content-Length"]/1024);
            if($filesize>$size) return true;
            else return false;
        }
  • 相关阅读:
    dfs手写栈模板
    Remember the Word
    Sockets
    Sanatorium
    Exams
    Cormen — The Best Friend Of a Man
    win 7 普通家庭版 装IIS
    [引]构造文法时表达式中算符优先级的问题
    Chart系列(二):数据绑定
    算法整理篇之:数据结构 | 数组(1)
  • 原文地址:https://www.cnblogs.com/jackzhuo/p/11883702.html
Copyright © 2020-2023  润新知