php 零点累积

 

获取url中请求参数

function getQueryParams($url) {
    $data = parse_url($url);

    $params = array();
    $queryArr = explode('&', $data['query']);
    $queryArr = array_filter($queryArr);
    foreach ($queryArr as $value) {
        list($key, $val) = explode('=', $value);
        $params[$key] = $val;
    }
    return $params;
}

php判断是否含中文

1.正则表达式大全

x80-xff 英文字符

if (preg_match("/[x7f-xff]/", $string)) {//兼容gb2312,utf-8
echo "有中文";
}else{
echo "没有中文";
}

2.字符串长度

$mb= mb_strlen($str,'utf-8');

    $st = strlen($str);
    if($st==$mb)
        return '纯英文';
    if($st%$mb==0 && $st%3==0)
        return '纯汉字';
    return '汉英混合';
function cutstr($string, $length, $dot = ' ...') {
    if(strlen($string) <= $length) {
        return $string;
    }

    $pre = chr(1);
    $end = chr(1);
    $string = str_replace(array('&amp;', '&quot;', '&lt;', '&gt;'), array($pre.'&'.$end, $pre.'"'.$end, $pre.'<'.$end, $pre.'>'.$end), $string);

    $strcut = '';
    if(strtolower(CHARSET) == 'utf-8') {

        $n = $tn = $noc = 0;
        while($n < strlen($string)) {

            $t = ord($string[$n]);
            if($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) {
                $tn = 1; $n++; $noc++;
            } elseif(194 <= $t && $t <= 223) {
                $tn = 2; $n += 2; $noc += 2;
            } elseif(224 <= $t && $t <= 239) {
                $tn = 3; $n += 3; $noc += 2;
            } elseif(240 <= $t && $t <= 247) {
                $tn = 4; $n += 4; $noc += 2;
            } elseif(248 <= $t && $t <= 251) {
                $tn = 5; $n += 5; $noc += 2;
            } elseif($t == 252 || $t == 253) {
                $tn = 6; $n += 6; $noc += 2;
            } else {
                $n++;
            }

            if($noc >= $length) {
                break;
            }

        }
        if($noc > $length) {
            $n -= $tn;
        }

        $strcut = substr($string, 0, $n);

    } else {
        $_length = $length - 1;
        for($i = 0; $i < $length; $i++) {
            if(ord($string[$i]) <= 127) {
                $strcut .= $string[$i];
            } else if($i < $_length) {
                $strcut .= $string[$i].$string[++$i];
            }
        }
    }

    $strcut = str_replace(array($pre.'&'.$end, $pre.'"'.$end, $pre.'<'.$end, $pre.'>'.$end), array('&amp;', '&quot;', '&lt;', '&gt;'), $strcut);

    $pos = strrpos($strcut, chr(1));
    if($pos !== false) {
        $strcut = substr($strcut,0,$pos);
    }
    return $strcut.$dot;
}
View Code

中文字符转换为十六进制ascii码存储

不同编码请在不同编码环境下测试获取

$str = ':';
$len = strlen($str);
$asci = array();
for($i=0; $i<$len; $i++) {   
   $asci[] = '0x'. dechex(ord($str{$i})); 
}
$res = '';
foreach($asci as $val){
    $res = $res ? $res. '.chr('. $val .')' : 'chr('. $val .')';
}
echo $res;
echo "
";
echo chr(0xef).chr(0xbc).chr(0x9a);

 array_map  在一个PHP类中通过array_map函数回调内部方法又该如何做呢?

array array_map ( callback callback, array arr1 [, array ...] )

array_map() 返回一个数组,该数组包含了 arr1 中的所有单元经过 callback 作用过之后的单元。callback 接受的参数数目应该和传递给 array_map() 函数的数组数目一致。

静态方法

$return array_map(array(__CLASS__'_entities'), $arg);

非静态方法

$return array_map(array($this'entities'), $arg);

1,在PHP类中通过array_map函数回调内部方法时,类名称可以使用__CLASS__常量。我们强烈推荐使用此常量,因为不论你类如何修改,这能保证最终结果都是正确的。
2,如果回调的方法是非静态类型,亦可通过$this伪变量指定。
3,在PHP类中的array_map函数总是不能识别self伪变量。

使用多个参数:

<?php
function myfunction($v1,$v2) 
{
if ($v1===$v2)
    {
    return "same";
    }
return "different";
}
$a1=array("Horse","Dog","Cat");
$a2=array("Cow","Dog","Rat");
print_r(array_map("myfunction",$a1,$a2));
?>

Extract新用法 - SQL语句

extract(DB::fetch_first("SELECT COUNT(*) AS threadcount, SUM(t.replies)+COUNT(*) AS replycount
FROM ".DB::table('forum_thread')." t, ".DB::table('forum_forum')." f
WHERE f.fid='$fid' AND t.fid=f.fid AND t.displayorder>='0'"));

extract导出变量,可以直接使用 $threadcount, $replycount

生成xml文档,<![CDATA[ content ]]> content 有效,安全过滤,可以正常解析的xml文档

public function XmlSafeStr($str, $cdata = true) {
        if (!is_string($str)) return $str;
        if ($cdata) {
            $str = str_replace(']]>', '', $str);
        }
        /* invalid chars
         * 0x00 - 0x08
        * 0x0b - 0x0c
        * 0x0e - 0x1f
        */
        $str = preg_replace('/[x00-x08x0b-x0cx0e-x1f]/', '', $str);
        return $str;
    }

 百分比统计

$total = 2018673;
        
        $times = array(
            1 => 1217169,
            2 => 11529,
            3 => 3279,
            4 => 2279,
            5 => 743,
            6 => 314,
            7 => 58,
            8 => 31, 
            9 => 6,
            10 => 2,
            11 => 0,
        );
        $tmpArr = array();
        foreach($times as $num => $time) {
            echo 'L' . ($num-1) . "			" . number_format(floor(($time * 10000000) /$total) * 0.00001, 5, '.', '') . '%';
            echo PHP_EOL;
            $tmpArr[] = floor(($time * 1000) /$total) * 0.1;
        }
        echo array_sum($tmpArr);

原文地址:https://www.cnblogs.com/bandbandme/p/3144041.html