phpはjson中国語が空または文字化けしの問題を処理する.

1715 ワード

function arrayToJson($array) {
 arrayForRecursive($array, 'urlencode', true);
 $json = json_encode($array);
 $json = urldecode($json);
 return $json;

}
function arrayForRecursive(&$array, $function, $apply_to_keys_also=false) {
 static $recursive_counter = 0;
 if (++$recursive_counter>1000)
      die('      !');
 foreach ($array as $key=>$value)
 {
      if (is_array($value))
           arrayForRecursive($array[$key], $function, $apply_to_keys_also);
      else
           $array[$key] = $function(repalceSpecialSign($value));
      if ($apply_to_keys_also&&is_string($key))
      {
           $new_key = $function($key);
           if ($new_key!=$key)
           {
                $array[$new_key] = $array[$key];
                unset($array[$key]);
           }
      }
 }
 $recursive_counter--;

}
function struct2Array($item) {
 if (!is_string($item))
 {
      $item = (array)$item;
      foreach ($item as $key=>$val)
      {
           $item[$key]  = Struct2Array($val);
      }
 }
 return $item;

}
/**
  • repalceSpecialSign、特殊記号を置換.
  • @param str string文字列
  • @return str */function repalceSpecialSign($string) { $string = preg_replace(“/\s/“,““,$string); $string = str_replace(“\“,“\\“,$string); $string = str_replace(“'“,“\'“,$string); $string = str_replace(“"“,“\"“,$string); $string = str_replace(PHP_EOL,'',$string); $string = str_replace(“”,““,$string); $string = str_replace(“\r”,““,$string); return $string; }

  • arraytojsonを呼び出せばいいです.
    http://www.pooy.net/original-php-json-function-json-format.html