首頁 >後端開發 >php教程 >如何在 PHP 中擷取 JSONP 結果集?

如何在 PHP 中擷取 JSONP 結果集?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-30 18:25:30919瀏覽

How to Extract JSONP Resultset in PHP?

在PHP 中提取JSONP 結果集

簡介

給定的任務涉及從返回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] !== '[' &amp;&amp; $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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn