• PHP之封装一些常用的工具类函数


      分享一些PHP中常用的工具里函数:

      1 <?php
      2 
      3 /**
      4  * Created by PhpStorm.
      5  * User: Steven
      6  * Date: 2016/8/12
      7  * Time: 14:21
      8  */
      9 class Utils
     10 {
     11 
     12     /**
     13      * 将xml转换为数组
     14      * @param $xml  需要转化的xml
     15      * @return mixed
     16      */
     17     static function xml_to_array($xml)
     18     {
     19         $ob = simplexml_load_string($xml);
     20         $json = json_encode($ob);
     21         $array = json_decode($json, true);
     22         return $array;
     23     }
     24 
     25     /**
     26      * 将数组转化成xml
     27      * @param $data 需要转化的数组
     28      * @return string
     29      */
     30     static function data_to_xml($data)
     31     {
     32         if (is_object($data)) {
     33             $data = get_object_vars($data);
     34         }
     35         $xml = '';
     36         foreach ($data as $key => $val) {
     37             if (is_null($val)) {
     38                 $xml .= "<$key/>
    ";
     39             } else {
     40                 if (!is_numeric($key)) {
     41                     $xml .= "<$key>";
     42                 }
     43                 $xml .= (is_array($val) || is_object($val)) ? self::data_to_xml($val) : $val;
     44                 if (!is_numeric($key)) {
     45                     $xml .= "</$key>";
     46                 }
     47             }
     48         }
     49         return $xml;
     50     }
     51 
     52     /**
     53      * PHP post请求之发送XML数据
     54      * @param $url 请求的URL
     55      * @param $xmlData
     56      * @return mixed
     57      */
     58     static function xml_post_request($url, $xmlData)
     59     {
     60         $header[] = "Content-type: text/xml";        //定义content-type为xml,注意是数组
     61         $ch = curl_init($url);
     62         curl_setopt($ch, CURLOPT_URL, $url);
     63         curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
     64         curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
     65         curl_setopt($ch, CURLOPT_POST, 1);
     66         curl_setopt($ch, CURLOPT_POSTFIELDS, $xmlData);
     67         $response = curl_exec($ch);
     68         if (curl_errno($ch)) {
     69             print curl_error($ch);
     70         }
     71         curl_close($ch);
     72         return $response;
     73     }
     74 
     75     /**
     76      * PHP post请求之发送Json对象数据
     77      *
     78      * @param $url 请求url
     79      * @param $jsonStr 发送的json字符串
     80      * @return array
     81      */
     82     static function http_post_json($url, $jsonStr)
     83     {
     84         $ch = curl_init();
     85         curl_setopt($ch, CURLOPT_POST, 1);
     86         curl_setopt($ch, CURLOPT_URL, $url);
     87         curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonStr);
     88         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
     89         curl_setopt($ch, CURLOPT_HTTPHEADER, array(
     90                 'Content-Type: application/json; charset=utf-8',
     91                 'Content-Length: ' . strlen($jsonStr)
     92             )
     93         );
     94         $response = curl_exec($ch);
     95         $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
     96 
     97         return array($httpCode, $response);
     98     }
     99 
    100     /**
    101      * PHP post请求之发送数组
    102      * @param $url
    103      * @param array $param
    104      * @return mixed
    105      * @throws Exception
    106      */
    107     static function httpsPost($url, $param = array())
    108     {
    109         $ch = curl_init(); // 初始化一个 cURL 对象
    110         curl_setopt($ch, CURLOPT_URL, $url); // 设置需要抓取的URL
    111         curl_setopt($ch, CURLOPT_HEADER, 0); // // 设置header
    112         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上。
    113         // 如果你想PHP去做一个正规的HTTP POST,设置这个选项为一个非零值。这个POST是普通的 application/x-www-from-urlencoded 类型,多数被HTML表单使用。
    114         curl_setopt($ch, CURLOPT_POST, 1);
    115         curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($param)); // 传递一个作为HTTP “POST”操作的所有数据的字符串。//http_build_query:生成 URL-encode 之后的请求字符串
    116         curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    117         curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    118         curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    119             'Content-type:application/x-www-form-urlencoded;charset=utf-8'
    120         ));
    121         $rtn = curl_exec($ch); // 运行cURL,请求网页
    122         if ($errno = curl_errno($ch)) {
    123             throw new Exception ('Curl Error(' . $errno . '):' . curl_error($ch));
    124         }
    125         curl_close($ch); // 关闭URL请求
    126         return $rtn; // 返回获取的数据
    127     }
    128 
    129     /**
    130      * 接收xml数据并转化成数组
    131      * @return array
    132      */
    133     static function getRequestBean()
    134     {
    135         $bean = simplexml_load_string(file_get_contents('php://input')); // simplexml_load_string() 函数把 XML 字符串载入对象中。如果失败,则返回 false。
    136         $request = array();
    137         foreach ($bean as $key => $value) {
    138             $request [( string )$key] = ( string )$value;
    139         }
    140         return $request;
    141     }
    142 
    143     /**
    144      * 接收json数据并转化成数组
    145      * @return mixed
    146      */
    147     static function getJsonData()
    148     {
    149         $bean = file_get_contents('php://input');
    150         $result = json_decode($bean, true);
    151         return $result;
    152     }
    153 
    154     /**
    155      * 翻译中英文字符串(调换位置)
    156      */
    157     static function m_strrev($string)
    158     {
    159         $num = mb_strlen($string, 'utf-8');
    160         $new_string = "";
    161         for ($i = $num - 1; $i >= 0; $i--) {
    162             $char = mb_substr($string, $i, 1, 'utf-8');
    163             $new_string .= $char;
    164         }
    165         return $new_string;
    166     }
    167 
    168     /**
    169      * 判断当前服务器系统
    170      * @return string
    171      */
    172     public static function getOS()
    173     {
    174         if (PATH_SEPARATOR == ':') {
    175             return 'Linux';
    176         } else {
    177             return 'Windows';
    178         }
    179     }
    180 
    181     /**
    182      * 日志方法
    183      * @param $log
    184      */
    185     static function writeLog($log)
    186     {
    187         $dir = __DIR__ . "/../Log/";
    188         if (!is_dir($dir)) {
    189             mkdir($dir);
    190         }
    191         $filename = $dir . date("Y-m-d") . ".log";
    192         file_put_contents($filename, date("Y-m-d H:i:s") . "	" . $log . PHP_EOL, FILE_APPEND);
    193     }
    194 
    195     /**
    196      * 签名验证函数
    197      * @param $param   需要加密的字符串
    198      * @param $sign     第三方已经机密好的用来比对的字串
    199      * @return bool
    200      */
    201     static function ValidateSign($param, $sign)
    202     {
    203         if (md5($param) == $sign) {
    204             return true;
    205         } else {
    206             return false;
    207         }
    208     }
    209 }
    210 
    211 ?>
  • 相关阅读:
    David Cutler NT之父
    VS2012 RC 编译Qt 4.8.2完整过程
    vm demo加固分析
    IDA dump so
    博客园首次发帖
    WebRTC本地选择codec(web本地模拟)
    Android 摄像头预览悬浮窗,可拖动,可显示在其他app上方
    [译] 清除浮动的新方法
    《学习HTML5游戏编程》译记
    Web中的Tip组件实现
  • 原文地址:https://www.cnblogs.com/Steven-shi/p/5896903.html
Copyright © 2020-2023  润新知