Example #1
0
File: func.php Project: hejibo/usee
function arrayUrlEncode(&$data, $toReplace = array(), $toClear = array())
{
    if (is_array($data) && count($data)) {
        foreach ($data as $k => &$v) {
            if (is_array($v)) {
                arrayUrlEncode($v, $toReplace, $toClear);
            } elseif ($v) {
                if (is_numeric($v) && $v < 1 && $v > 0 && $v[0] != '0') {
                    $v = '0' . $v;
                }
                if (is_int($v) || is_float($v)) {
                } elseif (isset($v)) {
                    is_array($toReplace) && ($v = strtr($v, $toReplace));
                    11 != strlen($v) && is_array($toClear) && ($v = preg_replace($toClear, '', $v));
                    if (is_string($v)) {
                        $v = urlencode($v);
                    }
                }
            }
        }
    }
    return true;
}
Example #2
0
 /**
  * Ajax方式返回数据到客户端
  * @access protected
  * @param mixed $data 要返回的数据
  * @param String $type AJAX返回数据格式
  * @param int $json_option 传递给json_encode的option参数
  * @return void
  */
 protected function ajaxReturn($data, $type = '', $json_option = 0)
 {
     if (empty($type)) {
         $type = C('DEFAULT_AJAX_RETURN');
     }
     // 2015.8.4 very80
     // 兼容直接传入三种类型数据,以第2个参数为int进行识别,eg: $this->ajaxReturn('', 1, '登录失效');
     if ($type && is_int($type)) {
         $data = ['data' => $data, 'code' => $type, 'msg' => $json_option];
         $type = 'DATA';
         $json_option = 0;
     }
     switch (strtoupper($type)) {
         case 'DATA':
             if (!is_array($data) || is_array($data) && !array_key_exists('data', $data)) {
                 $data = ['data' => $data];
             }
             array_key_exists('code', $data) || ($data['code'] = C('DEFAULT_AJAX_RETURN_STATUS'));
             array_key_exists('msg', $data) || ($data['msg'] = C('DEFAULT_AJAX_RETURN_MESSAGE'));
             arrayUrlEncode($data);
             // 返回JSON数据格式到客户端 包含状态信息
             header('Content-Type:application/json; charset=utf-8');
             exit(urldecode(json_encode($data, $json_option)));
         case 'JSON':
             // 返回JSON数据格式到客户端 包含状态信息
             header('Content-Type:application/json; charset=utf-8');
             exit(json_encode($data, $json_option));
         case 'XML':
             // 返回xml格式数据
             header('Content-Type:text/xml; charset=utf-8');
             exit(xml_encode($data));
         case 'JSONP':
             // 返回JSON数据格式到客户端 包含状态信息
             header('Content-Type:application/json; charset=utf-8');
             $handler = isset($_GET[C('VAR_JSONP_HANDLER')]) ? $_GET[C('VAR_JSONP_HANDLER')] : C('DEFAULT_JSONP_HANDLER');
             exit($handler . '(' . json_encode($data, $json_option) . ');');
         case 'EVAL':
             // 返回可执行的js脚本
             header('Content-Type:text/html; charset=utf-8');
             exit($data);
         default:
             // 用于扩展其他返回格式数据
             Hook::listen('ajax_return', $data);
     }
 }