php常用的公共方法

curl请求指定url (post)

/**
 * curl请求指定url (post)
 * @param $url
 * @param array $data
 * @return mixed
 */
function curl_post($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] = is_assoc($array1[$key]) ? array_merge_multiple($array1[$key], $array2[$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;
}

隐藏敏感字符

/**
 * 隐藏敏感字符
 * @param $value
 * @return string
 */
function substr_cut($value)
{
    $strlen = mb_strlen($value, 'utf-8');
    if ($strlen <= 1) return $value;
    $firstStr = mb_substr($value, 0, 1, 'utf-8');
    $lastStr = mb_substr($value, -1, 1, 'utf-8');
    return $strlen == 2 ? $firstStr . str_repeat('*', $strlen - 1) : $firstStr . str_repeat("*", $strlen - 2) . $lastStr;
}

时间戳转换日期

/**
 * 时间戳转换日期
 * @param $timeStamp
 * @return false|string
 */
function format_time($timeStamp)
{
    return date('Y-m-d H:i:s', $timeStamp);
}

左侧填充0

/**
 * 左侧填充0
 * @param $value
 * @param int $padLength
 * @return string
 */
function pad_left($value, $padLength = 2)
{
    return \str_pad($value, $padLength, "0", STR_PAD_LEFT);
}

重写trim方法 (解决int类型过滤后后变为string类型)

/**
 * 重写trim方法 (解决int类型过滤后后变为string类型)
 * @param $str
 * @return string
 */
function my_trim($str)
{
    return is_string($str) ? trim($str) : $str;
}

/**
 * 重写htmlspecialchars方法 (解决int类型过滤后后变为string类型)
 * @param $string
 * @return string
 */
function my_htmlspecialchars($string)
{
    return is_string($string) ? htmlspecialchars($string) : $string;
}

过滤emoji表情

/**
 * 过滤emoji表情
 * @param $text
 * @return null|string|string[]
 */
function filter_emoji($text)
{
    if (!is_string($text)) {
        return $text;
    }
    // 此处的preg_replace用于过滤emoji表情
    // 如需支持emoji表情, 需将mysql的编码改为utf8mb4
    return preg_replace('/[\xf0-\xf7].{3}/', '', $text);
}

根据指定长度截取字符串

/**
 * 根据指定长度截取字符串
 * @param $str
 * @param int $length
 * @return bool|string
 */
function str_substr($str, $length = 30)
{
    if (strlen($str) > $length) {
        $str = mb_substr($str, 0, $length);
    }
    return $str;
}

隐藏手机号中间四位 13012345678 -> 130****5678

/**
 * 隐藏手机号中间四位 13012345678 -> 130****5678
 * @param string $mobile 手机号
 * @return string
 */
function hide_mobile(string $mobile)
{
    return substr_replace($mobile, '****', 3, 4);
}

打印调试函数

/**
 * 打印调试函数
 * @param  $content
 * @param bool $isDie
 * @param bool $export
 */
function pre($content, bool $isDie = true, bool $export = false)
{
    header('Content-type: text/html; charset=utf-8');
    $output = $export ? var_export($content, true) : print_r($content, true);
    echo "<pre>{$output}</pre>";
    $isDie && die;
}

图片打文字水印

/**
*图片打文字水印
*$source       原图
*$target       生成水印图
*$water_text   水印文字
*$water_w      文字水印宽度
*$water_h      文字水印高度
*$font_size    水印文字大小
*$angle        水印文字倾斜角度
*$alpha        水印文字透明度 0-127
*$over_flag true 覆盖 false 不覆盖创建一个新的图片
*/
function textwater($source, $target, $water_text='test', $water_w=250, $water_h=210, $font_size=14, $angle=-45, $alpha=80, $over_flag=false) {
	//检测图片是否存在
	if (!file_exists($source)) return false;
	$info = getimagesize($source);
	//通过编号获取图像类型
	$type = image_type_to_extension($info[2],false);
	//在内存中创建和图像类型一样的图像
	$fun = "imagecreatefrom".$type;
	//图片复制到内存
	$image = $fun($source);
	//设置字体颜色和透明度
	$color = imagecolorallocatealpha($image, 0, 0, 0, $alpha);
	$x_length = $info[0];
	$y_length = $info[1];
	$font = 'statics/fonts/SourceHanSansCN-Normal.ttf';
	$water_text = mb_convert_encoding($water_text, "html-entities", "utf-8");
	//铺满屏幕
	for ($x = 10; $x < $x_length; $x) {
		for ($y = 10; $y < $y_length; $y) {
			imagettftext($image, $font_size, $angle, $x, $y, $color, $font, $water_text);
			$y += $water_h;
		}
		$x += $water_w;
	}
	$fun = "image".$type;
	//保存图片
	$fun($image, $target);
	//销毁图片
	imagedestroy($image);
	return true;
}

根据提供的日期获取当前周的全部日期信息

    /**
     * @param string $time 时间戳
     * @param string $format 转化格式
     * @return array
     */
    function get_week($time = '', $format='Y-m-d'){
        $time = $time != '' ? $time : time();   // 时间为空吗,则获取当前时间戳
        $week = date('w', $time);   // 获取当前时间是周几
        $date = [];  
        for ($i=1; $i<=7; $i++){
            // 从周日开始
            $date[$i] = date($format ,strtotime( '+' . $i-$week-1 .' days', $time));  
            // 从周一开始
            $date[$i] = date($format ,strtotime( '+' . $i-$week .' days', $time));
        }
        
    }

根据二维数组中的某一个字段值进行排序

function arr_sort_to_field($array,$field,$by='desc')
{
	$last_names = array_column($array,$field);
	if($by == 'desc'){
		array_multisort($last_names,SORT_DESC,$array); // 降序
	}else{
		array_multisort($last_names,SORT_ASC ,$array); // 升序
	}
	return $array;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值