码迷,mamicode.com
首页 > Web开发 > 详细

php 实战常用代码示例

时间:2018-05-08 14:25:30      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:性能   ...   except   不能   pattern   str   回滚   while   back   

1 依次输出一数组。每输入3个换一行。

 //讲个小细节,有人说 $i< sizeof($len)  每次循环时都要去计算下数组长度,是否很浪费性能。  -----回答: 1 你观察很细。 2 现在的解释器比较智能,这个问题会被自动优化处理。

for($i  = 0; $i<sizeof($len); $i++){  
   if( $i && $i%3==0) echo "<br>";
   echo $arr[$i];
}

 2 字符串不允许出现特殊字符。

        $chinese= "\x{4e00}-\x{9fa5}";//中文匹配
        $pattern="/^[a-zA-Z0-9($chinese)]+$/u";//加上英文、数字匹配
        if(!preg_match($pattern,$nick_name)) {
                exit("不允许特殊字符");
        }

3 支付utf-8 的 strlen 和 substr 函数。 (求utf-8 字符串长度,求utf-8 的子字符串 ) 

   //utf-8 求utf-8 字符串长度
   function  strlen_utf8($str)
   {
        $i = 0;
        $count = 0;
        $len = strlen($str);
        while ($i < $len) {
            $chr = ord($str[$i]);
            $count++;
            $i++;
            if ($i >= $len)
                break;
            if ($chr & 0x80) {
                $chr <<= 1;
                while ($chr & 0x80) {
                    $i++;
                    $chr <<= 1;
                }
            }
        }
        return $count;
    }

   //求utf-8 子字符串。
       function  subStringUtf8($str, $start, $lenth) {
        $len = strlen($str);
        $r = array();
        $n = 0;
        $m = 0;
        for ($i = 0; $i < $len; $i++) {
            $x = substr($str, $i, 1);
            $a = base_convert(ord($x), 10, 2);
            $a = substr(‘00000000‘ . $a, -8);
            if ($n < $start) {
                if (substr($a, 0, 1) == 0) {

                } elseif (substr($a, 0, 3) == 110) {
                    $i += 1;
                } elseif (substr($a, 0, 4) == 1110) {
                    $i += 2;
                }
                $n++;
            } else {
                if (substr($a, 0, 1) == 0) {
                    $r[] = substr($str, $i, 1);
                } elseif (substr($a, 0, 3) == 110) {
                    $r[] = substr($str, $i, 2);
                    $i += 1;
                } elseif (substr($a, 0, 4) == 1110) {
                    $r[] = substr($str, $i, 3);
                    $i += 2;
                } else {
                    $r[] = ‘‘;
                }
                if (++$m >= $lenth) {
                    break;
                }
            }
        }
        return join("", $r);
    }
    

4 小数位减法时,容易丢失精度,使用数学函数。

$sum =  bcadd($a , $b , 4);  // a+b 保留4位小数。
$diff  = bcsub( $a , $b  , 4); // a- b 保留4位小数。
$mul = bcmul($a , $b , 4);    //a*b 保留4位小数。
$div = bcdiv($a , $b , 4);    //a/b 保留4位小数  b 不能为0.

5 使用事务。(不同框架代码不一样,这里以Yii 为例)

 $trans = Yii::app()->db->beginTransaction();  //创建事务。
 $trans->commit();   //事务提交
 $trans->rollback();   //事务回滚

 

6 异常处理。 (生产环境中,不希望对外暴露错误,以及程序执行意外时,数据库回滚处理。) 

       try {
            $trans = Yii::app()->db->beginTransaction();
            //... 中间的执行代码
            $trans->commit();  //事务提交
        } catch (Exception $e) {
            log($e->getMessage());  //日志记录异常信息
            $trans->rollback();  //事务回滚
        }

 

php 实战常用代码示例

标签:性能   ...   except   不能   pattern   str   回滚   while   back   

原文地址:https://www.cnblogs.com/babytuo/p/8986400.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!