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; }
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; }