Example #1
0
 public static function format($row, $option)
 {
     global $_G;
     //JSON解码
     $option['jsonde'] = $option['jsonde'] ? $option['jsonde'] : array();
     //逗号分隔
     $option['split'] = $option['split'] ? $option['split'] : array();
     //空隔分隔
     $option['space'] = $option['space'] ? $option['space'] : array();
     //反序列化
     $option['serialize'] = $option['serialize'] ? $option['serialize'] : array();
     //HTML实体
     $option['entity'] = $option['entity'] ? $option['entity'] : array();
     //移除数字零
     $option['zeroed'] = $option['zeroed'] ? $option['zeroed'] : array();
     //Unicode
     $option['unicode'] = $option['unicode'] ? $option['unicode'] : array();
     //修正地址
     $option['attach'] = $option['attach'] ? $option['attach'] : array();
     //转换换行
     $option['nl2br'] = $option['nl2br'] ? $option['nl2br'] : array();
     ///////////////////////////////
     foreach ($row as $key => &$val) {
         if ($val == '' && (in_array($key, $option['jsonde']) || in_array($key, $option['split']) || in_array($key, $option['space']) || in_array($key, $option['serialize']))) {
             $val = array();
         } else {
             if (in_array($key, $option['jsonde'])) {
                 //JSON解码
                 $val = fix_json($val);
             } elseif (in_array($key, $option['split'])) {
                 //换行和双竖线分隔符
                 $val = preg_split("/(\n|,|(\\|\\|))/", $val);
             } elseif (in_array($key, $option['space'])) {
                 //空格分隔符
                 $val = explode(' ', $val);
             } elseif (in_array($key, $option['serialize'])) {
                 //反序列化
                 $val = unserialize($val);
             } elseif (in_array($key, $option['entity'])) {
                 //HTML实体
                 $val = entity_encode($val, $_G['product']['charset']);
             } elseif (in_array($key, $option['zeroed'])) {
                 //去除小数后多除的零
                 $val = $val + 0;
             } elseif (in_array($key, $option['unicode'])) {
                 //Unicode
                 $val = unicode_encode($val, $_G['product']['charset']);
             } elseif (in_array($key, $option['attach'])) {
                 //修正地址
                 $val = fix_attach($val);
             } elseif (in_array($key, $option['nl2br'])) {
                 //转换换行
                 $val = preg_replace("(\r\n|\r|\n)", '<br />', $val);
             }
         }
     }
     return $row;
 }
Example #2
0
 public static function convert($dataset, $datatype, $option)
 {
     global $_G;
     //解码
     $option['jsonde'] = $option['jsonde'] ? $option['jsonde'] : array();
     //使用逗号分隔
     $option['split'] = $option['split'] ? $option['split'] : array();
     //使用空隔分隔
     $option['space'] = $option['space'] ? $option['space'] : array();
     //反序列化
     $option['serialize'] = $option['serialize'] ? $option['serialize'] : array();
     //HTML实体
     $option['entity'] = $option['entity'] ? $option['entity'] : array();
     //移除数字零
     $option['zeroed'] = $option['zeroed'] ? $option['zeroed'] : array();
     //Unicode
     $option['unicode'] = $option['unicode'] ? $option['unicode'] : array();
     //修正地址
     $option['attach'] = $option['attach'] ? $option['attach'] : array();
     //修正地址
     $option['nl2br'] = $option['nl2br'] ? $option['nl2br'] : array();
     //修正地址
     $option['cdata'] = $option['cdata'] ? $option['cdata'] : array();
     //字段别名
     $option['alias'] = $option['alias'] ? $option['alias'] : array();
     ///////////////////////////////
     foreach ($dataset as &$row) {
         foreach ($row as $key => &$text) {
             //JSON解码
             if (in_array($key, $option['jsonde'])) {
                 $text = fix_json($text);
             }
             //替换换行
             if (in_array($key, $option['nl2br'])) {
                 $text = preg_replace("(\r\n|\r|\n)", '<br />', $text);
             }
             //处理图片
             if (in_array($key, $option['attach'])) {
                 $text = fix_attach($text);
             }
         }
     }
     unset($row, $text);
     //修正分页参数
     if ($option['pagination'] > $option['pagecount']) {
         $option['pagination'] = $option['pagecount'];
     } elseif (!$option['pagination'] || $option['pagination'] < -1) {
         $option['pagination'] = 1;
     }
     ///////////////////////////////
     switch ($datatype) {
         case "xml":
             $content .= '<?xml version="1.0" encoding="' . self::$charset . '"?>';
             $content .= '<data pagesize="' . $option['pagesize'] . '" rowscount="' . $option['rowscount'] . '" pagecount="' . $option['pagecount'] . '" pagination="' . $option['pagination'] . '" domain="' . self::$domain . '" charset="' . self::$charset . '">';
             //$content.='<option>'.fix_json($option).'</option>';
             foreach ($dataset as $row) {
                 $n = 1;
                 $content .= '<item ';
                 foreach ($row as $key => $text) {
                     if (!in_array($key, $option['cdata'])) {
                         //$text = dhtmlspecialchars(str_replace('$','\$',addslashes($text)));
                         $content .= '' . $key . '=' . '"' . $text . '" ';
                     }
                     $n++;
                 }
                 $content .= '>';
                 foreach ($row as $key => $text) {
                     if (in_array($key, $option['cdata'])) {
                         $content .= '<' . $key . '><![CDATA[' . $text . ']]></' . $key . '>';
                     }
                     $n++;
                 }
                 $content .= '</item>';
             }
             $content .= '</data>';
             break;
         case "json":
             $content = '{"pagesize":"' . $option['pagesize'] . '", "rowscount":"' . $option['rowscount'] . '", "pagecount":"' . $option['pagecount'] . '", "pagination":"' . $option['pagination'] . '", "domain":"' . self::$domain . '", "charset":"' . self::$charset . '", "data" : [';
             $numrows = count($dataset);
             $x = 1;
             foreach ($dataset as $row) {
                 $n = 1;
                 $content .= '{';
                 foreach ($row as $key => $text) {
                     $content .= '"' . $key . '" : ' . '"' . addslashes($text) . '"' . ($n != count($row) ? ',' : '');
                     $n++;
                 }
                 $content .= '}' . ($x != $numrows ? ',' : '');
                 $x++;
             }
             $content .= ']}';
             break;
         case 'csv':
             //取第一条数据
             $newest = array_shift($dataset);
             //获取所有字段名
             $fields = array_keys($newest);
             $content .= '';
             foreach ($fields as $key) {
                 $content .= ($option['alias'][$key] ? $option['alias'][$key] : $key) . '	';
             }
             $content .= chr(13);
             foreach ($dataset as $row) {
                 $content .= '';
                 foreach ($row as $key => $text) {
                     $content .= '="' . $text . '"	';
                 }
                 $content .= chr(13);
                 //$report.= $row['account'].'	="'.$row["qq"].'"	="'.$row["phone"].'"	'.$row["email"].'	'.$row["blog"].chr(13);
             }
             break;
     }
     return $content;
 }