概要
指定されたタスクには、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 中国語 Web サイトの他の関連記事を参照してください。