php函数

  • 闭包函数
       $b = 'b';
        $qq = function($a) use ($b){
            return $a.$b;
        };
        echo $qq('a');   //打印的是'ab'
use里面的变量一定要是存在的值

is_numeric() 判断一个值是不是数字,返回结果是bool类型

  • 取唯一值
function createCode(){
    return md5(uniqid(microtime(true),true));
}
  • 把excell里面的信息转换成数组
public function test2(Request $request)
    {
        $request = $request->all();
        $text = $request['text'];
        $res1 = preg_replace('/\n/','_____',$text);
        //        把横线作为分割标识  切分成数组
        $res2 = explode('_____',$res1);
        //        dd($res2);
        foreach ($res2 as $res3){
            //            echo $res3; //此时$res3是每一行的值
            $res4 = preg_replace('/\t/','***',$res3);
            //            dd($res4);   //把每一行的值转换成了数组
            $res5 = explode('***',$res4);
            dd($res5);
        }
    }

2.取两个数组的键的差集

// array_diff_key($arr1,$arr2);  返回的是$arr1,在$arr2中不同的键的数组
//结果都是$arr1里面的键
$array1 = array('blue'  => 1, 'red'  => 2, 'green'  => 3, 'purple' => 4);
        $array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan'   => 8);

        $a = array_diff_key($array1, $array2);
        $b = array_diff_key($array2, $array1);
        $aa = array_merge($a,$b);
        dd($aa);
取两个结果的差集

3.返回数组中值的差集

// array_diff($arr1,$arr2); //返回的是$arr1数组中的值,跟$arr2数组的值相比后的差集。
//(结果都是$arr1里面的值)
$array1 = array('blue'  => 5, 'red'  => 2, 'green'  => 3, 'purple' => 4);
$array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan'   => 8);
$aa = array_diff($array1, $array2);
dd($aa);
返回数组中值的差集

4.array_map

array array_map ( callable $callback , array $array1 [, array $... ] )
array_map():返回数组,是为 array1 每个元素应用 callback函数之后的数组。 callback 函数形参的数量和传给 array_map() 数组数量,两者必须一样。

使用方式1
function cube($n)
{
    return($n * $n * $n);
}

$a = array(1, 2, 3, 4, 5);
$b = array_map("cube", $a);
print_r($b);
结果
Array
(
    [0] => 1
    [1] => 8
    [2] => 27
    [3] => 64
    [4] => 125
)

使用方式2,=匿名函数
$func = function($value) {
    return $value * 2;
};

print_r(array_map($func, range(1, 5)));

使用方式3,直接把函数当成参数写
      $a = array(1, 2, 3, 4, 5);
        $b = array_map(function($n){
            return $n*$n;
        },$a);
        dd($b);

使用4,更多的数组
function show_Spanish($n, $m)
{
    return("The number $n is called $m in Spanish");
}
$a = array(1, 2, 3, 4, 5);
$b = array("uno", "dos", "tres", "cuatro", "cinco");

$c = array_map("show_Spanish", $a, $b);
print_r($c);
// printout of $c
Array
(
    [0] => The number 1 is called uno in Spanish
    [1] => The number 2 is called dos in Spanish
    [2] => The number 3 is called tres in Spanish
    [3] => The number 4 is called cuatro in Spanish
    [4] => The number 5 is called cinco in Spanish
)
例四还有一种方式
 public function test()
    {
        $arr1= array(1, 2, 3, 4, 5);
        $arr2 = array(1, 2, 3, 4, 5);
        $res = array_map(function($n,$m){
            return $n*$m;
        },$arr1,$arr2);
        dd($res);
    }
得到的结果也是$arr1中的值与$arr2的值相乘的值
array:5 [▼
  0 => 1
  1 => 4
  2 => 9
  3 => 16
  4 => 25
]
其实这个函数是,又几个参数,就要有几个数组

5.array_walk($arr,'fun',$prefix)

// array_walk()第一个参数是数组,第二个参数是函数。也可以有第三个参数,自定义输出内容
//  作为参数的函数中,第一个是值,第二个是键
$fruits = array( "a" => "orange", "b" => "banana", "c" => "apple");
        array_walk($fruits,function($val,$key){
            echo $key.':'.$val.'<br>';
        });

$fruits = array( "a" => "orange", "b" => "banana", "c" => "apple");
        array_walk($fruits,function($val,$key,$prefix){
            echo $key.':'.$prefix.'--'.$val.'<br>';
        },'这是前缀,是第三个参数');
       
array_walk()
array_walk($arr,'fun',$prefix)

6.compact()

compact(),把字段组成数组

正则

 /**
     * 判断是否是邮箱
     * @param $email
     * @return bool
     */
    public static function isEmail($email)/*{{{*/
    {
        if (preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/", $email)) {
            return true;
        }
        return false;
    }

    /**
     * 判断是否是手机号码
     * @param $mobile
     * @return mixed
     */
    public static function isMobile($mobile)
    {
        $preg_mobile = '/^(130|131|132|133|134|135|136|137|138|139|150|151|152|153|154|155|156|157|158|159|180|181|182|183|184|185|186|187|188|189|170|171)\d{8}$/';
        return preg_match($preg_mobile, $mobile);
    }

function get_client_ip() {
    $ip = $_SERVER['REMOTE_ADDR'];
    
    if (isset($_SERVER['HTTP_X_REAL_FORWARDED_FOR'])) {
        $ip = $_SERVER['HTTP_X_REAL_FORWARDED_FOR'];
    } elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    } elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
        $ip = $_SERVER['HTTP_CLIENT_IP'];
    }

    //检查IP地址  
    if(!preg_match("/^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/", $ip)) {  
        return '0.0.0.0';  
    }
    return $ip;
}


//显示错误信息,并结束
function display_error_exit($error_msg) {
    header("Content-type: text/html; charset=utf-8");
    echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />';
    exit($error_msg);
}

//清除html代码
function clear_html_code($string) { 
    $string = trim(addslashes(strip_tags($string)));
    return $string;
}

function encoding_html($string) {
    $string = trim(addslashes(htmlspecialchars($string)));
    return $string;
}

//站点临时关闭
function website_close() {
    global $web_site;
    if($web_site['close']==1) {
        echo "<script>top.location.href='/close.php';</script>";
        exit();
    }
}

//地区限制功能(可限制地区和IP)
function website_deny() {
    global $C_Patch;
    include_once($C_Patch."/ip.php");
    include_once($C_Patch."/../cache/dqxz.php");
    include_once($C_Patch."/common/commonfun.php");
    
    $client_ip = get_client_ip();
    $address = '='.iconv("GB2312","UTF-8",convertip($client_ip,"$C_Patch/"));
    foreach ($dqxz as $k => $v) {
        if (strpos($address,$v) || strpos('='.$client_ip,$v)) {
            display_error_exit("对不起,您所在的地区或IP暂时无法访问,请稍后重试");
        }
    }
}
//判断手机或电脑
function isMobile()
{ 
    // 如果有HTTP_X_WAP_PROFILE则一定是移动设备
    if (isset ($_SERVER['HTTP_X_WAP_PROFILE']))
    {
        return true;
    } 
    // 如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息
    if (isset ($_SERVER['HTTP_VIA']))
    { 
        // 找不到为flase,否则为true
        return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false;
    } 
    // 脑残法,判断手机发送的客户端标志,兼容性有待提高
    if (isset ($_SERVER['HTTP_USER_AGENT']))
    {
        $clientkeywords = array ('nokia',
            'sony',
            'ericsson',
            'mot',
            'samsung',
            'htc',
            'sgh',
            'lg',
            'sharp',
            'sie-',
            'philips',
            'panasonic',
            'alcatel',
            'lenovo',
            'iphone',
            'ipod',
            'blackberry',
            'meizu',
            'android',
            'netfront',
            'symbian',
            'ucweb',
            'windowsce',
            'palm',
            'operamini',
            'operamobi',
            'openwave',
            'nexusone',
            'cldc',
            'midp',
            'wap',
            'mobile'
            ); 
        // 从HTTP_USER_AGENT中查找手机浏览器的关键字
        if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT'])))
        {
            return true;
        } 
    } 
    // 协议法,因为有可能不准确,放到最后判断
    if (isset ($_SERVER['HTTP_ACCEPT']))
    { 
        // 如果只支持wml并且不支持html那一定是移动设备
        // 如果支持wml和html但是wml在html之前则是移动设备
        if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html'))))
        {
            return true;
        } 
    } 
    return false;
}
//截图功能用来计算字符长度
function str_leng($str) {
    mb_internal_encoding("UTF-8");
    return mb_strlen($str)*12;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,463评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,868评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,213评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,666评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,759评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,725评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,716评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,484评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,928评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,233评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,393评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,073评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,718评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,308评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,538评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,338评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,260评论 2 352

推荐阅读更多精彩内容