当前位置:

PHP实用函数汇总

温馨提示:本文共16187个字,读完预计41分钟。

1、数字金额转换成中文大写金额的函数
    /**
      *String Int  $num  要转换的小写数字或小写字符串
      *return 大写字母
      *小数位为两位
    **/
    function toChineseNumber($num){
        $c1 = "零壹贰叁肆伍陆柒捌玖";
        $c2 = "分角元拾佰仟万拾佰仟亿";
        $num = round($num, 2);
        $num = $num * 100;
        if (strlen($num) > 10) {
            return "数据太长,没有这么大的钱吧,检查下";
        } 
        $i = 0;
        $c = "";
        while (1) {
            if ($i == 0) {
                $n = substr($num, strlen($num)-1, 1);
            } else {
                $n = $num % 10;
            } 
            $p1 = substr($c1, 3 * $n, 3);
            $p2 = substr($c2, 3 * $i, 3);
            if ($n != '0' || ($n == '0' && ($p2 == '亿' || $p2 == '万' || $p2 == '元'))) {
                $c = $p1 . $p2 . $c;
            } else {
                $c = $p1 . $c;
            } 
            $i = $i + 1;
            $num = $num / 10;
            $num = (int)$num;
            if ($num == 0) {
                break;
            } 
        }
        $j = 0;
        $slen = strlen($c);
        while ($j < $slen) {
            $m = substr($c, $j, 6);
            if ($m == '零元' || $m == '零万' || $m == '零亿' || $m == '零零') {
                $left = substr($c, 0, $j);
                $right = substr($c, $j + 3);
                $c = $left . $right;
                $j = $j-3;
                $slen = $slen-3;
            } 
            $j = $j + 3;
        } 
 
        if (substr($c, strlen($c)-3, 3) == '零') {
            $c = substr($c, 0, strlen($c)-3);
        }
        if (empty($c)) {
            return "零元整";
        }else{
            return $c . "整";
        }
    }

2、生成唯一编号比如订单编号会员编号

  //生成订单编号
    public function createNO($table, $field, $prefix)
    {
        $billno = $prefix . date('YmdHis') . random(4, true);

        while (1) {
            $count = pdo_fetchcolumn('select count(*) from ' . tablename($table) . ' where ' . $field . '=:billno limit 1', array(':billno' => $billno));

            if ($count <= 0) {
                break;
            }

            $billno = $prefix . date('YmdHis') . random(4, true);
        }

        return $billno;
    }

3、Excel操作  点击下载 》phpexcel

//excel导入导出

    public function column_str($key)
    {
        $array = 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', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ', 'BA', 'BB', 'BC', 'BD', 'BE', 'BF', 'BG', 'BH', 'BI', 'BJ', 'BK', 'BL', 'BM', 'BN', 'BO', 'BP', 'BQ', 'BR', 'BS', 'BT', 'BU', 'BV', 'BW', 'BX', 'BY', 'BZ', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'CG', 'CH', 'CI', 'CJ', 'CK', 'CL', 'CM', 'CN', 'CO', 'CP', 'CQ', 'CR', 'CS', 'CT', 'CU', 'CV', 'CW', 'CX', 'CY', 'CZ', 'DA', 'DB', 'DC', 'DD', 'DE', 'DF', 'DG', 'DH', 'DI', 'DJ', 'DK', 'DL', 'DM', 'DN', 'DO', 'DP', 'DQ', 'DR', 'DS', 'DT', 'DU', 'DV', 'DW', 'DX', 'DY', 'DZ', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF', 'EG', 'EH', 'EI', 'EJ', 'EK', 'EL', 'EM', 'EN', 'EO', 'EP', 'EQ', 'ER', 'ES', 'ET', 'EU', 'EV', 'EW', 'EX', 'EY', 'EZ');
        return $array[$key];
    }

    public function column($key, $columnnum = 1)
    {
        return $this->column_str($key) . $columnnum;
    }

    /**
     * 导出Excel
     * @param type $list
     * @param type $params
     */
    public function export($list, $params = array())
    {
        if (PHP_SAPI == 'cli') {
            exit('This example should only be run from a Web Browser');
        }

        require_once IA_ROOT . '/framework/library/phpexcel/PHPExcel.php';
        $excel = new PHPExcel();
        $excel->getProperties()->setCreator('weichengtech')->setLastModifiedBy('weichengtech')->setTitle('Office 2007 XLSX Test Document')->setSubject('Office 2007 XLSX Test Document')->setDescription('Test document for Office 2007 XLSX, generated using PHP classes.')->setKeywords('office 2007 openxml php')->setCategory('report file');
        $sheet = $excel->setActiveSheetIndex(0);
        $rownum = 1;

        foreach ($params[‘columns’] as $key => $column) {
            $sheet->setCellValue($this->column($key, $rownum), $column[‘title’]);

            if (!empty($column[‘width’])) {
                $sheet->getColumnDimension($this->column_str($key))->setWidth($column[‘width’]);
            }
        }

        ++$rownum;
        $len = count($params[‘columns’]);

        foreach ($list as $row) {
            $i = 0;

            while ($i < $len) {
                $value = (isset($row[$params[‘columns’][$i][‘field’]]) ? $row[$params[‘columns’][$i][‘field’]] : '');
                $sheet->setCellValue($this->column($i, $rownum), $value);
                ++$i;
            }

            ++$rownum;
        }

        $excel->getActiveSheet()->setTitle($params[‘title’]);
        $filename = urlencode($params[‘title’] . '-' . date('Y-m-d H:i', time()));
        ob_end_clean();
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment;filename="' . $filename . '.xlsx"');
        header('Cache-Control: max-age=0');
        $writer = PHPExcel_IOFactory::createWriter($excel, 'Excel2007');
        $this->SaveViaTempFile($writer);
        exit();
    }

    /**
     * @param $objWriter PHPExcel_Writer_IWriter
     */
    public function SaveViaTempFile($objWriter)
    {
        $filePath = '' . rand(0, getrandmax()) . rand(0, getrandmax()) . '.tmp';
        $objWriter->save($filePath);
        readfile($filePath);
        unlink($filePath);
    }

    /**
     * 生成模板文件Excel
     * @param type $list
     * @param type $params
     */
    public function temp($title, $columns = array())
    {
        if (PHP_SAPI == 'cli') {
            exit('This example should only be run from a Web Browser');
        }

        require_once IA_ROOT . '/framework/library/phpexcel/PHPExcel.php';
        $excel = new PHPExcel();
        $excel->getProperties()->setCreator('weichengtech')->setLastModifiedBy('weichengtech')->setTitle('Office 2007 XLSX Test Document')->setSubject('Office 2007 XLSX Test Document')->setDescription('Test document for Office 2007 XLSX, generated using PHP classes.')->setKeywords('office 2007 openxml php')->setCategory('report file');
        $sheet = $excel->setActiveSheetIndex(0);
        $rownum = 1;

        foreach ($columns as $key => $column) {
            $sheet->setCellValue($this->column($key, $rownum), $column[‘title’]);

            if (!empty($column[‘width’])) {
                $sheet->getColumnDimension($this->column_str($key))->setWidth($column[‘width’]);
            }
        }

        ++$rownum;
        $len = count($columns);
        $k = 1;

        while ($k <= 5000) {
            $i = 0;

            while ($i < $len) {
                $sheet->setCellValue($this->column($i, $rownum), '');
                ++$i;
            }

            ++$rownum;
            ++$k;
        }

        $excel->getActiveSheet()->setTitle($title);
        $filename = urlencode($title);
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment;filename="' . $filename . '.xls"');
        header('Cache-Control: max-age=0');
        $writer = PHPExcel_IOFactory::createWriter($excel, 'Excel5');
        $writer->save('php://output');
        exit();
    }

    public function import($excefile)
    {
        global $_W;
        require_once IA_ROOT . '/framework/library/phpexcel/PHPExcel.php';
        require_once IA_ROOT . '/framework/library/phpexcel/PHPExcel/IOFactory.php';
        require_once IA_ROOT . '/framework/library/phpexcel/PHPExcel/Reader/Excel5.php';
        $path = IA_ROOT . '/addons/zhls_sun/data/tmp/';

        if (!is_dir($path)) {
            load()->func('file');
            mkdirs($path, '0777');
        }

        $filename = $_FILES[$excefile][‘name’];
        $tmpname = $_FILES[$excefile][‘tmp_name’];

        if (empty($tmpname)) {
            message('请选择要上传的Excel文件!', '', 'error');
        }

        $ext = strtolower(pathinfo($filename, PATHINFO_EXTENSION));
        if (($ext != 'xlsx') && ($ext != 'xls')) {
            message('请上传 xls 或 xlsx 格式的Excel文件!', '', 'error');
        }

        $file = time() . $_W[‘uniacid’] . '.' . $ext;
        $uploadfile = $path . $file;
        $result = move_uploaded_file($tmpname, $uploadfile);

        if (!$result) {
            message('上传Excel 文件失败, 请重新上传!', '', 'error');
        }

        $reader = PHPExcel_IOFactory::createReader($ext == 'xls' ? 'Excel5' : 'Excel2007');
        $excel = $reader->load($uploadfile);
        $sheet = $excel->getActiveSheet();
        $highestRow = $sheet->getHighestRow();
        $highestColumn = $sheet->getHighestColumn();
        $highestColumnCount = PHPExcel_Cell::columnIndexFromString($highestColumn);
        $values = array();
        $row = 2;

        while ($row <= $highestRow) {
            $rowValue = array();
            $col = 0;

            while ($col < $highestColumnCount) {
                $rowValue[] = $sheet->getCellByColumnAndRow($col, $row)->getValue();
                ++$col;
            }

            $values[] = $rowValue;
            ++$row;
        }

        return $values;
    }

    //excel导入导出

4、直接调用$this->getPinyin($val, 'xxxx_');

/*汉字换取拼音*/

    public function getPinyin($_String, $lstring, $flag = 1)
    {
        if ($flag) {
            $_Code = 'utf-8';
        } else {
            $_Code = 'gb2312';
        }

        if (!empty($lstring)) {
            $_String = $lstring . $_String;
        }

        $_DataKey = 'a|ai|an|ang|ao|ba|bai|ban|bang|bao|bei|ben|beng|bi|bian|biao|bie|bin|bing|bo|bu|ca|cai|can|cang|cao|ce|ceng|cha' . '|chai|chan|chang|chao|che|chen|cheng|chi|chong|chou|chu|chuai|chuan|chuang|chui|chun|chuo|ci|cong|cou|cu|' . 'cuan|cui|cun|cuo|da|dai|dan|dang|dao|de|deng|di|dian|diao|die|ding|diu|dong|dou|du|duan|dui|dun|duo|e|en|er' . '|fa|fan|fang|fei|fen|feng|fo|fou|fu|ga|gai|gan|gang|gao|ge|gei|gen|geng|gong|gou|gu|gua|guai|guan|guang|gui' . '|gun|guo|ha|hai|han|hang|hao|he|hei|hen|heng|hong|hou|hu|hua|huai|huan|huang|hui|hun|huo|ji|jia|jian|jiang' . '|jiao|jie|jin|jing|jiong|jiu|ju|juan|jue|jun|ka|kai|kan|kang|kao|ke|ken|keng|kong|kou|ku|kua|kuai|kuan|kuang' . '|kui|kun|kuo|la|lai|lan|lang|lao|le|lei|leng|li|lia|lian|liang|liao|lie|lin|ling|liu|long|lou|lu|lv|luan|lue' . '|lun|luo|ma|mai|man|mang|mao|me|mei|men|meng|mi|mian|miao|mie|min|ming|miu|mo|mou|mu|na|nai|nan|nang|nao|ne' . '|nei|nen|neng|ni|nian|niang|niao|nie|nin|ning|niu|nong|nu|nv|nuan|nue|nuo|o|ou|pa|pai|pan|pang|pao|pei|pen' . '|peng|pi|pian|piao|pie|pin|ping|po|pu|qi|qia|qian|qiang|qiao|qie|qin|qing|qiong|qiu|qu|quan|que|qun|ran|rang' . '|rao|re|ren|reng|ri|rong|rou|ru|ruan|rui|run|ruo|sa|sai|san|sang|sao|se|sen|seng|sha|shai|shan|shang|shao|' . 'she|shen|sheng|shi|shou|shu|shua|shuai|shuan|shuang|shui|shun|shuo|si|song|sou|su|suan|sui|sun|suo|ta|tai|' . 'tan|tang|tao|te|teng|ti|tian|tiao|tie|ting|tong|tou|tu|tuan|tui|tun|tuo|wa|wai|wan|wang|wei|wen|weng|wo|wu' . '|xi|xia|xian|xiang|xiao|xie|xin|xing|xiong|xiu|xu|xuan|xue|xun|ya|yan|yang|yao|ye|yi|yin|ying|yo|yong|you' . '|yu|yuan|yue|yun|za|zai|zan|zang|zao|ze|zei|zen|zeng|zha|zhai|zhan|zhang|zhao|zhe|zhen|zheng|zhi|zhong|' . 'zhou|zhu|zhua|zhuai|zhuan|zhuang|zhui|zhun|zhuo|zi|zong|zou|zu|zuan|zui|zun|zuo';
        $_DataValue = '-20319|-20317|-20304|-20295|-20292|-20283|-20265|-20257|-20242|-20230|-20051|-20036|-20032|-20026|-20002|-19990' . '|-19986|-19982|-19976|-19805|-19784|-19775|-19774|-19763|-19756|-19751|-19746|-19741|-19739|-19728|-19725' . '|-19715|-19540|-19531|-19525|-19515|-19500|-19484|-19479|-19467|-19289|-19288|-19281|-19275|-19270|-19263' . '|-19261|-19249|-19243|-19242|-19238|-19235|-19227|-19224|-19218|-19212|-19038|-19023|-19018|-19006|-19003' . '|-18996|-18977|-18961|-18952|-18783|-18774|-18773|-18763|-18756|-18741|-18735|-18731|-18722|-18710|-18697' . '|-18696|-18526|-18518|-18501|-18490|-18478|-18463|-18448|-18447|-18446|-18239|-18237|-18231|-18220|-18211' . '|-18201|-18184|-18183|-18181|-18012|-17997|-17988|-17970|-17964|-17961|-17950|-17947|-17931|-17928|-17922' . '|-17759|-17752|-17733|-17730|-17721|-17703|-17701|-17697|-17692|-17683|-17676|-17496|-17487|-17482|-17468' . '|-17454|-17433|-17427|-17417|-17202|-17185|-16983|-16970|-16942|-16915|-16733|-16708|-16706|-16689|-16664' . '|-16657|-16647|-16474|-16470|-16465|-16459|-16452|-16448|-16433|-16429|-16427|-16423|-16419|-16412|-16407' . '|-16403|-16401|-16393|-16220|-16216|-16212|-16205|-16202|-16187|-16180|-16171|-16169|-16158|-16155|-15959' . '|-15958|-15944|-15933|-15920|-15915|-15903|-15889|-15878|-15707|-15701|-15681|-15667|-15661|-15659|-15652' . '|-15640|-15631|-15625|-15454|-15448|-15436|-15435|-15419|-15416|-15408|-15394|-15385|-15377|-15375|-15369' . '|-15363|-15362|-15183|-15180|-15165|-15158|-15153|-15150|-15149|-15144|-15143|-15141|-15140|-15139|-15128' . '|-15121|-15119|-15117|-15110|-15109|-14941|-14937|-14933|-14930|-14929|-14928|-14926|-14922|-14921|-14914' . '|-14908|-14902|-14894|-14889|-14882|-14873|-14871|-14857|-14678|-14674|-14670|-14668|-14663|-14654|-14645' . '|-14630|-14594|-14429|-14407|-14399|-14384|-14379|-14368|-14355|-14353|-14345|-14170|-14159|-14151|-14149' . '|-14145|-14140|-14137|-14135|-14125|-14123|-14122|-14112|-14109|-14099|-14097|-14094|-14092|-14090|-14087' . '|-14083|-13917|-13914|-13910|-13907|-13906|-13905|-13896|-13894|-13878|-13870|-13859|-13847|-13831|-13658' . '|-13611|-13601|-13406|-13404|-13400|-13398|-13395|-13391|-13387|-13383|-13367|-13359|-13356|-13343|-13340' . '|-13329|-13326|-13318|-13147|-13138|-13120|-13107|-13096|-13095|-13091|-13076|-13068|-13063|-13060|-12888' . '|-12875|-12871|-12860|-12858|-12852|-12849|-12838|-12831|-12829|-12812|-12802|-12607|-12597|-12594|-12585' . '|-12556|-12359|-12346|-12320|-12300|-12120|-12099|-12089|-12074|-12067|-12058|-12039|-11867|-11861|-11847' . '|-11831|-11798|-11781|-11604|-11589|-11536|-11358|-11340|-11339|-11324|-11303|-11097|-11077|-11067|-11055' . '|-11052|-11045|-11041|-11038|-11024|-11020|-11019|-11018|-11014|-10838|-10832|-10815|-10800|-10790|-10780' . '|-10764|-10587|-10544|-10533|-10519|-10331|-10329|-10328|-10322|-10315|-10309|-10307|-10296|-10281|-10274' . '|-10270|-10262|-10260|-10256|-10254';
        $_TDataKey = explode('|', $_DataKey);
        $_TDataValue = explode('|', $_DataValue);
        $_Data = ('5.0' <= PHP_VERSION ? array_combine($_TDataKey, $_TDataValue) : $this->_Array_Combine($_TDataKey, $_TDataValue));
        arsort($_Data);
        reset($_Data);

        if ($_Code != 'gb2312') {
            $_String = $this->_U2_Utf8_Gb($_String);
        }

        $_Res = '';
        $i = 0;

        while ($i < strlen($_String)) {
            $_P = ord(substr($_String, $i, 1));

            if (160 < $_P) {
                $_Q = ord(substr($_String, ++$i, 1));
                $_P = (($_P * 256) + $_Q) – 65536;
            }

            $_Res .= $this->_Pinyin($_P, $_Data);
            ++$i;
        }

        return preg_replace('/[^a-z0-9]*/', '', $_Res);
    }

    public function _Pinyin($_Num, $_Data)
    {
        if ((0 < $_Num) && ($_Num < 160)) {
            return chr($_Num);
        }

        if (($_Num < -20319) || (-10247 < $_Num)) {
            return '';
        }

        foreach ($_Data as $k => $v) {
            if ($v <= $_Num) {
                break;
            }
        }

        return $k;
    }

    public function _U2_Utf8_Gb($_C)
    {
        $_String = '';

        if ($_C < 128) {
            $_String .= $_C;
        } else if ($_C < 2048) {
            $_String .= chr(192 | ($_C >> 6));
            $_String .= chr(128 | ($_C & 63));
        } else if ($_C < 65536) {
            $_String .= chr(224 | ($_C >> 12));
            $_String .= chr(128 | (($_C >> 6) & 63));
            $_String .= chr(128 | ($_C & 63));
        } else {
            if ($_C < 2097152) {
                $_String .= chr(240 | ($_C >> 18));
                $_String .= chr(128 | (($_C >> 12) & 63));
                $_String .= chr(128 | (($_C >> 6) & 63));
                $_String .= chr(128 | ($_C & 63));
            }
        }

        return iconv('UTF-8', 'GB2312', $_String);
    }

    public function _Array_Combine($_Arr1, $_Arr2)
    {
        $i = 0;

        while ($i < count($_Arr1)) {
            $_Res[$_Arr1[$i]] = $_Arr2[$i];
            ++$i;
        }

        return $_Res;
    }

 

 

本文链接:,转发请注明来源!

我要说两句

抱歉,您需要登录后才能留言。