php常用方法整理(持续更新)

PHP正则替换HTML代码中的所有图片链接地址

/**
 * PHP正则替换HTML代码中的所有图片链接地址
 * description htmlspecialchars() 后的字符串
 * http_path 添加的图片路径
 * */
function handleDescriptionHtml($description,$http_path)
{
    $description = htmlspecialchars_decode($description);
    $pregRule = '/<img.*?src=[\"|\']?(.*?)[\"|\']?\s.*?>/i';
    $description = preg_replace($pregRule, '<img src="'.$http_path. '${1}" />', $description);
    return $description;
}

PHP正则替换mackdown代码中的所有图片链接地址

/**
 * PHP正则替换markdown代码中的所有图片链接地址
 * http_path 添加的图片路径
 * */
function handleDescriptionMackdown($description,$http_path)
{
    $pregRule = '/!\\[.*\\]\\((.+)\\)/';
    $description = preg_replace($pregRule, '![]('.$http_path. '${1})', $description);
    return $description;
}

获取域名

/**
 * 获取域名
 * */
function protocol()
{
  $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
  return $protocol.$_SERVER[HTTP_HOST];
}

转换字符编码为utf-8

/**
 * 转换字符编码为utf-8
 */
function strToUtf8($str){
    $encode = mb_detect_encoding($str, array("ASCII",'UTF-8',"GB2312","GBK",'BIG5'));
    if($encode == 'UTF-8'){
        return $str;
    }else{
        return mb_convert_encoding($str, 'UTF-8', $encode);
    }
}

二维数组排序

/**
 * 二维数组排序
 * array 数组数据
 * keys 键
 * sort 排序 asc:正序 desc:倒序
 */
//方法一
function arraySort($array, $keys, $sort = 'asc') {
    if ($sort == 'asc') {
        $sort = SORT_ASC;
    } else {
        $sort = SORT_DESC;
    }
    $keysValue = [];
    foreach ($array as $k => $v) {
        $keysValue[$k] = $v[$keys];
    }
    array_multisort($keysValue, $sort, $array);
    return $array;
}
//方法二
  function arraySort($array,$keys,$sort='asc') {
    $newArr = $valArr = array();
    foreach ($array as $key=>$value) {
        $valArr[$key] = $value[$keys];
    }
    ($sort == 'asc') ?  asort($valArr) : arsort($valArr);
    reset($valArr);
    foreach($valArr as $key=>$value) {
        $newArr[$key] = $array[$key];
    }
    return $newArr;
}

curl_get

/**
 * curl_get
 * url 请求地址
 */
function curl_get($url){
     $header = array(
         'Accept: application/json',
      );
      $curl = curl_init();
      //设置抓取的url
      curl_setopt($curl, CURLOPT_URL, $url);
      //设置头文件的信息作为数据流输出
      curl_setopt($curl, CURLOPT_HEADER, 0);
      // 超时设置,以秒为单位
      curl_setopt($curl, CURLOPT_TIMEOUT, 1);
      // 超时设置,以毫秒为单位
      // curl_setopt($curl, CURLOPT_TIMEOUT_MS, 500);
      // 设置请求头
      curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
      //设置获取的信息以文件流的形式返回,而不是直接输出。
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
      curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
      curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
      //执行命令
      $data = curl_exec($curl);
      if (curl_error($curl)) {
          return false;
      } else {
          // 打印返回的内容
          curl_close($curl);
          return $data;
      }
  }

curl_post

  /** 
   * curl_post
   * url 请求地址
   * postdata 传输的数据,数组格式
   */
  function curl_post( $url, $postdata ) {
     $header = array(
         'Accept: application/json',
      );
      //初始化
      $curl = curl_init();
      //设置抓取的url
      curl_setopt($curl, CURLOPT_URL, $url);
      //设置头文件的信息作为数据流输出
      curl_setopt($curl, CURLOPT_HEADER, 0);
      //设置获取的信息以文件流的形式返回,而不是直接输出。
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
      // 超时设置
      curl_setopt($curl, CURLOPT_TIMEOUT, 10);
      // 超时设置,以毫秒为单位
      // curl_setopt($curl, CURLOPT_TIMEOUT_MS, 500);
      // 设置请求头
      curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
      curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE );
      curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE );
      //设置post方式提交
      curl_setopt($curl, CURLOPT_POST, 1);
      curl_setopt($curl, CURLOPT_POSTFIELDS, $postdata);
      //执行命令
      $data = curl_exec($curl);
      if (curl_error($curl)) {
          return false;
      } else {
          // 打印返回的内容
          curl_close($curl);
          return $data;
      }
  }

获取两个时间相差几天

/**
 * 获取两个时间相差几天
 * time1 结束时间
 * time2 开始时间
 */
 function getTimeDifferDay($time1,$time2)
 {
   return floor((strtotime($time1) - strtotime($time2))/86400);
 }

获取两个时间相差几小时

 /**
 * 获取两个时间相差几小时
 * time1 结束时间
 * time2 开始时间
 */
 function getTimeDifferHour($time1,$time2)
 {
    $day = getTimeDifferDay($time1,$time2);
    $data = ceil((strtotime($time1) - strtotime($time2)) % 86400 / 3600);
    if ($day > 0) {
       $data += $day*24;
    }
    return $data;
 }

获取两个时间相差几分钟

 /**
 * 获取两个时间相差几分钟
 * time1 结束时间
 * time2 开始时间
 */
 function getTimeDifferMinute($time1,$time2)
 {
    $day = getTimeDifferDay($time1,$time2);
    $data = ceil((strtotime($time1) - strtotime($time2)) % 86400 / 60);
    if ($day > 0) {
       $data += $day*24*60;
    }
    return $data;
 }

获取两个时间相差几秒

 /**
 * 获取两个时间相差几秒
 * time1 结束时间
 * time2 开始时间
 */
 function getTimeDifferSecond($time1,$time2)
 {
    return strtotime($time1) - strtotime($time2);
 }

获取随机字符串

 /**
 * 获取随机字符串
 * length 字符串长度
 * isAll 是否字母数字
 */
  function getRand( $length = 6,$isAll = false)
  {
      if ($isAll) {
          $chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
      } else {
          $chars = '0123456789';
      }
      $randStr = '';
      for ( $i = 0; $i < $length; $i++ )
      {
          $randStr .= $chars[ mt_rand(0, strlen($chars) - 1) ];
      }
      return $randStr;
  }

身份证校验

 //身份证校验
 function isCreditNo($vStr){
      $vCity = array(
        '11','12','13','14','15','21','22',
        '23','31','32','33','34','35','36',
        '37','41','42','43','44','45','46',
        '50','51','52','53','54','61','62',
        '63','64','65','71','81','82','91'
      );
      if (!preg_match('/^([\d]{17}[xX\d]|[\d]{15})$/', $vStr)) return 0;
      if (!in_array(substr($vStr, 0, 2), $vCity)) return 0;
      $vStr = preg_replace('/[xX]$/i', 'a', $vStr);
      $vLength = strlen($vStr);
      if ($vLength == 18) {
        $vBirthday = substr($vStr, 6, 4) . '-' . substr($vStr, 10, 2) . '-' . substr($vStr, 12, 2);
      } else {
        $vBirthday = '19' . substr($vStr, 6, 2) . '-' . substr($vStr, 8, 2) . '-' . substr($vStr, 10, 2);
      }
      if (date('Y-m-d', strtotime($vBirthday)) != $vBirthday) return 0;
      if ($vLength == 18) {
        $vSum = 0;
        for ($i = 17 ; $i >= 0 ; $i--) {
          $vSubStr = substr($vStr, 17 - $i, 1);
          $vSum += (pow(2, $i) % 11) * (($vSubStr == 'a') ? 10 : intval($vSubStr , 11));
        }
        if($vSum % 11 != 1) return 0;
      }
      return 1;
    }

Base64图片转换为本地图片并保存

    /**
     * [Base64图片转换为本地图片并保存]
     * @param  [Base64] $base64_image_content [要保存的Base64]
     * @param  [目录] $path [要保存的路径]
     */
 function base64_image_content($base64_image_content,$path){
        //匹配出图片的格式
        if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64_image_content, $result)){
            $type = $result[2];
            $src = date('Ymd',time())."/";
            $new_file = $path."/".$src;
            if(!file_exists($new_file)){
                //检查是否有该文件夹,如果没有就创建,并给予最高权限
                mkdir($new_file, 0700);
            }
            $img = md5(time().rand()).".{$type}";
            $new_file = $new_file.$img;
            if (file_put_contents($new_file, base64_decode(str_replace($result[1], '', $base64_image_content)))){
                return $src.$img;
            }else{
                return 0;
            }
        }else{
            return 0;
        }
    }

大数值计算防止使用科学计数法

// calc(参数1参数2,参数3);
// 参数3指定运算方法:add加,sub减,mul乘,div除,pow幂,mod取模,sqrt求算术平方根
// 加减乖除:参数1 加上/减去/乘以/除以 参数2
// 幂:参数1 的 参数2 次方.
// 模:参数1 除以 参数2 得到的余数.
// 算术平方根:求 参数1 的算术平方根.参数2不起作用,但不能省略.
// echo calc('111111111111111111111111111111111111111111111111111111111111111111111111111110','2','mul');
function calc($m,$n,$x)
{
  $errors=array(
    '被除数不能为零',
    '负数没有平方根'
  );
  switch($x){
    case 'add':
      $t=bcadd($m,$n,2);
      break;
    case 'sub':
      $t=bcsub($m,$n,2);
      break;
    case 'mul':
      $t=bcmul($m,$n,2);
      break;
    case 'div':
      if($n!=0){
        $t=bcdiv($m,$n,2);
      }else{
        return $errors[0];
      }
      break;
    case 'pow':
      $t=bcpow($m,$n,2);
      break;
    case 'mod':
      if($n!=0){
        $t=bcmod($m,$n,2);
      }else{
        return $errors[0];
      }
      break;
    case 'sqrt':
      if($m>=0){
        $t=bcsqrt($m,2);
      }else{
        return $errors[1];
      }
      break;
  }
  // $t=preg_replace("/\..*0+$/",'',$t);
  return $t;
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GMYcode

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值