public static function arrayEncodeUTF8($array){ if(is_array($array)){ foreach($array as $key => $value){ if(!is_array($value) && is_string($value)){ json_encode($value); if(json_last_error() == 5){ $enc = mb_detect_encoding($value); $array[$key] = iconv($enc, 'UTF-8', $value); } } if(is_array($value)){ $array[$key] = self::arrayEncodeUTF8($value); } } } if(is_string($array)){ json_encode($array); if(json_last_error() == 5){ $enc = mb_detect_encoding($array); return iconv($enc, 'UTF-8', $array); } } return $array; }
/** * Converts a PHP array into a JSON encoded string. * * @param array $array The PHP array to convert. * @return string The JSON representation of the source array. */ public function toJSON($array) { $encoded= ''; if (is_array ($array)) { if (!function_exists('json_encode')) { if (@ include_once (XPDO_CORE_PATH . 'json/JSON.php')) { $json = new Services_JSON(); $encoded= $json->encode($array); } } else { $array = self::arrayEncodeUTF8($array); $encoded= json_encode($array); } } return $encoded; } public static function arrayEncodeUTF8($array){ foreach($array as $key => $value){ if(!is_array($value) && is_string($value)){ json_encode($value); if(json_last_error() == 5){ $array[$key] = iconv('CP1251', 'UTF-8', $value); } } else { $array[$key] = self::arrayEncodeUTF8($value); } } return $array; }