PHP commonly used custom function packaging and finishing

Print function
function dd($data)
{
    
    
    // 定义样式
    $str = '';
    if (is_bool($data)) {
    
    
        $show_data = $data ? 'true' : 'false';
    } elseif (is_null($data)) {
    
    
        $show_data = 'null';
    } else {
    
    
        $show_data = "<pre style=\"background: #000; color: #ccc; font: 16px 'Consolas'; text-align: left; width: 90%; padding: 5px\">\n";
        $show_data .= print_r($data, true);
        $show_data .= "</pre>\n";
        $show_data = print_r($show_data, true);
    }
    $str .= $show_data;
    $str .= '';
    echo $str;
}
Infinite pole classification to find the lower level (recursive)
function getTree($array, $pid =0, $level = 0){
    
    
        //声明静态数组,避免递归调用时,多次声明导致数组覆盖
        static $list = [];
        foreach ($array as $key => $value){
    
    
            //第一次遍历,找到父节点为根节点的节点 也就是pid=0的节点
            if ($value['pid'] == $pid){
    
    
                //父节点为根节点的节点,级别为0,也就是第一级
                $value['level'] = $level;
                //把数组放到list中
                $list[] = $value;
                //把这个节点从数组中移除,减少后续递归消耗
                unset($array[$key]);
                //开始递归,查找父ID为该节点ID的节点,级别则为原级别+1
                getTree($array, $value['id'], $level+1);
            }
        }
        return $list;
    }
     /*
     * 获得递归完的数据,遍历生成分类
     */
    $array = getTree($array);
    //处理样式,进行分级
    foreach($array as $value){
    
    
       echo str_repeat('--', $value['level']), $value['name'].'<br />';
    }
Infinitus classification to find subordinates (reference)
function generateTree($array){
    
    
    //第一步 构造数据
    $items = array();
    foreach($array as $value){
    
    
        $items[$value['id']] = $value;
    }
    //第二部 遍历数据 生成树状结构
    $tree = array();
    foreach($items as $key => $value){
    
    
        if(isset($items[$item['pid']])){
    
    
            $items[$item['pid']]['son'][] = &$items[$key];
        }else{
    
    
            $tree[] = &$items[$key];
        }
    }
    return $tree;
}
String replacement package
function PassStart($str,$start,$end=0,$dot="*",$charset="UTF-8"){
    
    
		$len = mb_strlen($str,$charset);
		if($start==0||$start>$len){
    
    
			$start = 1;
		}
		if($end!=0&&$end>$len){
    
    
			$end = $len-2;
		}
		$endStart = $len-$end;
		$top = mb_substr($str, 0,$start,$charset);
		$bottom = "";
		if($endStart>0){
    
    
			$bottom =  mb_substr($str, $endStart,$end,$charset);
		}
		$len = $len-mb_strlen($top,$charset);
		$len = $len-mb_strlen($bottom,$charset);
		$newStr = $top;
		for($i=0;$i<$len;$i++){
    
    
			$newStr.=$dot;
		}
		$newStr.=$bottom;
		return $newStr;
	}
 PassStart("", 4,4);
API return value
function return_msg($code, $msg = '', $data = []) {
    
    
 
    /*********** 组合数据  ***********/
    $return_data['code'] = $code;
    $return_data['msg']  = $msg;
    $return_data['data'] = $data;
 
    /*********** 返回信息并终止脚本  ***********/
    echo json_encode($return_data,JSON_UNESCAPED_UNICODE);
    die;
}
CURL POST request
/**
 * [post description]
 * @param  [type]  $url       [请求的url]
 * @param  string  $post_data [请求的数据]
 * @param  integer $timeout   [请求超时时间]
 * @return [type]  $Mix     [混合数据json|array|obj]
 */
function post($url, $post_data = '', $timeout = 3000)
{
    
    
	header("Content-type:text/html;charset=utf-8");
	$ch = curl_init();
	curl_setopt ($ch, CURLOPT_URL, $url);
	curl_setopt ($ch, CURLOPT_POST, 1);
	curl_setopt ($ch, CURLOPT_POSTFIELDS, $post_data);
	curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
	curl_setopt($ch, CURLOPT_HEADER, false);
	$file_contents = curl_exec($ch);
	curl_close($ch); 
	if ($content){
    
    
	 	return $file_contents;
	}else{
    
    
	 	return false;
	}       
}
CURL GET request
/**
 * [_curl_post_get description]
 * 如果$data为空转为get请求.https不验证证书
 * @param  [type]  $url     [url]
 * @param  array   $data    [要传的数据]
 * @param  integer $timeout [设置请求超时的时间]
 * @return [type]  $Mix     [混合数据json|array|obj]
 */
function _curl_post($url, $data = '',$timeout = 3000) {
    
    
	header("Content-type:text/html;charset=utf-8");
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);  //请求的url
	curl_setopt($ch, CURLOPT_HEADER, false);  是否携带head头信息 ture / error
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  //返回数据还是打印数据 0,直接输出 1,返回
	curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); //设置请求超时的时间
	// https请求 不验证证书和hosts方法:
	if (strlen($url) > 5 && strtolower(substr($url, 0, 5)) == "https")
	//if (1 == strpos("$".$url, "https://")) //效果同上面
	{
    
    
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
	}
	if(!empty($post_data)){
    
    
		curl_setopt($ch, CURLOPT_POST,1); //设置post方式请求,如果不写默认为get方式
		curl_setopt($ch, CURLOPT_POSTFIELDS,$data); //要传递的参数
	}		

	//发送请求 并接收数据赋值给$data
	$data = curl_exec($ch);  
	//关闭请求资源
	curl_close($ch);   
	$content = iconv('gb2312', 'utf-8//IGNORE',$data); //修改字符编码

    if ($content)
        return $content;
    else
        return false;
}
Generate random string
/************* 
*@l - length of random string 
*/ 
function generate_rand($l){
    
     
  $c= "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; 
  srand((double)microtime()*1000000); 
  for($i=0; $i < $l; $i++) {
    
     
      $rand.= $c[rand()%strlen($c)]; 
  } 
  return $rand; 
} 
E-mail verification
function is_valid_email($email, $test_mx = false) 
{
    
     
    if(eregi("^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $email)) 
        if($test_mx) 
        {
    
     
            list($username, $domain) = split("@", $email); 
            return getmxrr($domain, $mxrecords); 
        } 
        else 
            return true; 
    else 
        return false; 
} 
Calculate age based on birthday
function age($date){
    
     
    $year_diff = ''; 
    $time = strtotime($date); 
    if(FALSE === $time){
    
     
        return ''; 
    } 
 
    $date = date('Y-m-d', $time); 
    list($year,$month,$day) = explode("-",$date); 
    $year_diff = date("Y")$year; 
    $month_diff = date("m")$month; 
    $day_diff = date("d")$day; 
    if ($day_diff < 0 || $month_diff < 0) $year_diff; 
 
    return $year_diff; 
} 

Guess you like

Origin blog.csdn.net/qq_41526316/article/details/108776290