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

發表迴響