PHPでJSONPデータをJSONデータに変換する方法は何ですか?

在PHP中,可以通过使用json_decode()函数将JSONP数据转换为JSON数据。JSONP数据是由回调函数包裹的JSON数据,回调函数名称由请求参数指定。

JSONPデータをJSONデータに変換する例のコードが以下にあります:

<?php
// 获取JSONP数据
$jsonpData = $_GET['jsonpData'];

// 使用正则表达式提取JSON数据
$matches = [];
preg_match('/^(\w+)\((\{.+\})\);?$/', $jsonpData, $matches);

if (count($matches) === 3) {
  // 提取JSON数据
  $json = $matches[2];

  // 解码JSON数据
  $data = json_decode($json);

  if (json_last_error() === JSON_ERROR_NONE) {
    // JSON数据解码成功
    echo "JSON数据解码成功:<pre>";
    print_r($data);
    echo "</pre>";
  } else {
    // JSON数据解码失败
    echo "JSON数据解码失败";
  }
} else {
  // 无效的JSONP数据
  echo "无效的JSONP数据";
}
?>

上記の例のコードでは、まずGETリクエストパラメータからJSONPデータを取得します。次に、正規表現を使用してJSONデータを抽出し、PHPの配列またはオブジェクトにデコードします。デコードが成功した場合は、デコードされたJSONデータを出力します。デコードに失敗した場合は、エラーメッセージを出力します。

上記のサンプルコードは、JSONPデータの形式がcallbackFunctionName({…});であることを前提としています。ここでcallbackFunctionNameはコールバック関数の名前であり、{…}はJSONデータを表します。必要に応じて、異なるJSONPデータ形式に合わせて正規表現を修正することができます。

bannerAds