XML转JSON---微信支付返回XML转换代码

// ********XML转JSON方法

function xml_to_json($source) { 
if(is_file($source)){ //传的是文件,还是xml的string的判断 
$xml_array=simplexml_load_file($source); 
}else{ 
$source=$this->uncdata($source); 

$xml_array=simplexml_load_string($source);	

} 
$json = json_encode($xml_array); //php5,以及以上,如果是更早版本,请查看JSON.php 
return $this->decodeUnicode($json); 
} 



function decodeUnicode($str) 
{ 
    return preg_replace_callback('/\\\\u([0-9a-f]{4})/i', 
        create_function( 
            '$matches', 
            'return mb_convert_encoding(pack("H*", $matches[1]), "UTF-8", "UCS-2BE");' 
        ), 
        $str); 
}
function uncdata($xml) 
    { 
        // States: 
        // 
        //     'out' 
        //     '<' 
        //     ' $v) { 

            // Deal with "state". 
            switch ( $state ) { 
                case 'out': 
                    if ( '<' == $v ) { 
                        $state = $v; 
                    } else { 
                        $new_xml .= $v; 
                    } 
                break; 

                case '<': 
                    if ( '!' == $v  ) { 
                        $state = $state . $v; 
                    } else { 
                        $new_xml .= $state . $v; 
                        $state = 'out'; 
                    } 
                break; 

                 case '' == $v  ) { 
                        $new_xml .= str_replace('>','>', 
                                    str_replace('>','<', 
                                    str_replace('"','"', 
                                    str_replace('&','&', 
                                    $cdata)))); 
                        $state = 'out'; 
                    } else { 
                        $cdata .= $state . $v; 
                        $state = 'in'; 
                    } 
                break; 
            } // switch 

        } 

        // 
        // Return. 
        // 
            return $new_xml; 

    } 
 
//*********/**************////

 

你可能感兴趣的:(XML转JSON---微信支付返回XML转换代码)