簡介
給定的任務涉及從返回a 的URL 檢索和解析資料JSONP(帶填充的JSON)回應。 PHP 提供了有效處理此類回應的功能。
PHP 實作
JSONP 回應由包裹在 JSON 負載中的 JavaScript 程式碼組成。若要擷取實際的 JSON,請從回應的開頭刪除回呼函數名稱和括號。隨後,可以利用 PHP 函數 json_decode() 將 JSON 解析為關聯數組或物件。
用於JSONP 解碼的自訂函數
為了方便起見,可以定義名為jsonp_decode() 的自訂函數:
<code class="php">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); }</code>
用法
使用此自定義函數,可以按如下方式提取JSONP 數據:<code class="php">$data = jsonp_decode($response);</code>
示例
考慮提供的範例JSONP 回應:YAHOO.Finance.SymbolSuggest.ssCallback({"ResultSet":{"Query":"yahoo","Result":[{"symbol":"YHOO","name": "Yahoo! Inc.","exch": "NMS","type": "S","exchDisp":"NASDAQ","typeDisp":"Equity"}...]}})使用jsonp_decode() 函數:
<code class="php">$data = jsonp_decode($response); $query = $data['ResultSet']['Query']; foreach ($data['ResultSet']['Result'] as $result) { echo "Symbol: ".$result['symbol']." - Name: ".$result['name']." - Exchange: ".$result['exch']."\n"; }</code>此程式碼將從JSONP 回應中提取查詢字串以及符號、名稱和交換資訊。
以上是如何在 PHP 中擷取 JSONP 結果集?的詳細內容。更多資訊請關注PHP中文網其他相關文章!