php自备函数

<pre>
/**

  • 判断是否SSL协议
  • @return boolean
    */
    function is_ssl() {
    if(isset($_SERVER['HTTPS']) && ('1' == $_SERVER['HTTPS'] || 'on' == strtolower($_SERVER['HTTPS']))){
    return true;
    }elseif(isset($_SERVER['SERVER_PORT']) && ('443' == $_SERVER['SERVER_PORT'] )) {
    return true;
    }
    return false;
    //真为https假为http
    }
    </pre>

<pre>
//http请求
function https_request($url, $data = null)
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
if (!empty($data)){
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
}
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($curl);
curl_close($curl);
return $output;
}
</pre>
<pre>
//计算时间多少秒之前
function format_date($time){
$time = strtotime($time);
$t=time()-$time;
$f=array(
'31536000'=>'年',
'2592000'=>'个月',
'604800'=>'星期',
'86400'=>'天',
'3600'=>'小时',
'60'=>'分钟',
'1'=>'秒'
);
foreach ($f as $k=>$v) {
if (0 !=$c=floor($t/(int)$k)) {
return $c.$v.'前';
}
}
}
</pre>
<pre>
/**

  • 计算距离多少km
  • @param [float] $s [距离 :128.9]
  • @return [string] [200m 100km >30km]
    */
    function convertMeter($s){
    if($s /1000 <1){
    return sprintf("%.0f",$s).'m';
    }elseif($s /1000 >=1 && ($s /1000 < 30)){
    return sprintf("%.2f", ($s /1000))."km";
    }elseif($s /1000 > 30){
    return ">30km";
    }
    }
    </pre>

<pre>
/**
*求两个已知经纬度之间的距离,单位为米
*@param lng1,lng2 经度
*@param lat1,lat2 纬度
*@return float 距离,单位米
*@author www.Alixixi.com
**/
//function getdistance($lng1,$lat1,$lng2,$lat2){
function getdistance($in_location,$coordination){
$in_location = explode(',',$in_location);
list($lng1, $lat1) = $in_location;
$coordination = explode(',',$coordination);
list($lng2, $lat2) = $coordination;

//将角度转为狐度
$radLat1=deg2rad($lat1);//deg2rad()函数将角度转换为弧度
$radLat2=deg2rad($lat2);
$radLng1=deg2rad($lng1);
$radLng2=deg2rad($lng2);
$a=$radLat1-$radLat2;
$b=$radLng1-$radLng2;
$s=2*asin(sqrt(pow(sin($a/2),2)+cos($radLat1)*cos($radLat2)*pow(sin($b/2),2)))*6378.137*1000;
//$s = convertMeter($s);
return $s;

}

</pre>

<pre>
/**
*获取html文本里的img

  • @param string $content
  • @return array
    */
    function sp_getcontent_imgs($content){
    import("phpQuery");
    \phpQuery::newDocumentHTML($content);
    $pq=pq();
    $imgs=$pq->find("img");
    $imgs_data=array();
    if($imgs->length()){
    foreach ($imgs as $img){
    $img=pq($img);
    $im['src']=$img->attr("src");
    $im['title']=$img->attr("title");
    $im['alt']=$img->attr("alt");
    $imgs_data[]=$im;
    }
    }
    \phpQuery::$documents=null;
    return $imgs_data;
    }
    </pre>

<pre>
/**

  • 保存数组变量到php文件
    /
    function sp_save_var($path,$value){
    $ret = file_put_contents($path, "<?php\treturn " . var_export($value, true) . ";?>");
    return $ret;
    }
    </pre>
    <pre>
    /
    *
  • 随机字符串生成
  • @param int $len 生成的字符串长度
  • @return string
    */
    function sp_random_string($len = 6,$type=1) {
    if($type){
    $chars = array(
    "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k",
    "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v",
    "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G",
    "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R",
    "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2",
    "3", "4", "5", "6", "7", "8", "9"
    );
    $charsLen = count($chars) - 1;
    shuffle($chars); // 将数组打乱
    $output = "";
    for ($i = 0; $i < $len; $i++) {
    $output .= $chars[mt_rand(0, $charsLen)];
    }
    }else{
    return mt_rand(1000, 9999);
    }
    return $output;
    }
    </pre>

<pre>
/**

  • 递归检测一个值是否存在

  • @param [string] $value [要查找的字符串]

  • @param [array] $array [检查所在的数组]

  • @return [bool] [true/false]
    */
    function deep_in_array($value, $array) {
    foreach($array as $item) {
    if(!is_array($item)) {//如果不是数组
    if ($item == $value) {
    return true;
    } else {
    continue;
    }
    }

     if(in_array($value, $item)) {  //如果是数组
         return true;      
     } else if(deep_in_array($value, $item)) {  //递归调用
         return true;      
     }  
    

    }
    return false;
    }
    </pre>

<pre>
/**

  • 获取团队人数

  • @param [string] $name 介绍人姓名

  • @param [int] $rank 获取下级几级

  • @param [bool] $activation 是否获取激活的会员

  • @return [type] [description]
    */
    function getTeam($name,$rank=26,$activation=false,$lev=0){
    global $num ;
    $num++;
    if(!$name) return false;
    if($activation){//获取激活的下级会员
    $userList = M('member')->field('id,account,active')->where(array('references'=>$name,'active'=>1))->select();
    }else{
    $userList = M('member')->field('id,account,active')->where(array('references'=>$name))->select();
    }
    if($userList && $num<=$rank){
    foreach ($userList as $key => $value) {
    $userList[$key]['lev'] = $num;
    $userList['list'] = getTeam($value['account'],$rank,$activation);
    $arr[] = $userList;
    }
    }
    return $arr;
    }
    </pre>
    <pre>
    function arr_to_xml($arr, $dom = 0, $item = 0) {
    if (! $dom) {
    $dom = new DOMDocument ("1.0","UTF-8");
    }

    if (! $item) {
    $ccc = array_keys ( $arr );
    if ($ccc [0] == 'envelope') {
    $str_head = 'request';
    } else {
    $str_head = 'envelope';
    }
    $item = $dom->createElement ( $str_head );
    $dom->appendChild ( $item );
    }
    foreach ( $arr as $key => $val ) {
    $itemx = $dom->createElement ( is_string ( $key ) ? $key : "record" );
    $item->appendChild ( $itemx );
    if (! is_array ( $val )) {
    $text = $dom->createTextNode ( $val );
    $itemx->appendChild ( $text );
    } else {
    arr_to_xml ( $val, $dom, $itemx );
    }
    }

    return $dom->saveXML ();
    }

function xml_to_array($xml) {
$reg = "/<(\w+)[^>]?>([\x00-\xFF]?)<\/\1>/";
if (preg_match_all ( $reg, $xml, $matches )) {
$count = count ( $matches [0] );
$arr = array ();
for($i = 0; $i < $count; $i ++) {

        $key = $matches [1] [$i];   
        
        $val = xml_to_array ( $matches [2] [$i] ); // 递归
        if (array_key_exists ( $key, $arr )) {
            if (is_array ( $arr [$key] )) {
                if (! array_key_exists ( 0, $arr [$key] )) {
                    $arr [$key] = array (
                            $arr [$key] 
                    );
                }
            } else {
                
                $arr [$key] = array (
                        $arr [$key] 
                );
            }
            $arr [$key] [] = $val;
        } else {
            
            $arr [$key] = $val;
        }
    }
    return $arr;
} else {
    return $xml;
}

}
</pre>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容