php – 解析(解碼) 跨網域的 jsonp 的格式
本來透過 jQuery 的 $.ajax 使用 JSONP 格式,跨網域取得 jsonp 資料。但今天要改成了 php 去請求遠端資料,遠端輸出是 jsonp 格式,有什麼好建議能讓我不在修改遠端伺服器的輸出格式,直接再請求端使用 php 解析 jsonp 格式呢?
可以透過正規表示式來解的方法
$json_string = preg_replace("/[^(]*\((.*)\)/", "$1", $jsonp);
或是
function jsonp_decode($jsonp, $assoc = false) { // PHP 5.3 adds depth as third parameter to json_decode if($jsonp[0] !== '[' && $jsonp[0] !== '{') { // we have JSONP $jsonp = substr($jsonp, strpos($jsonp, '(')); } return json_decode(trim($jsonp,'();'), $assoc); }
也都能達到喔
參考
http://stackoverflow.com/questions/5081557/extract-jsonp-resultset-in-php