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データ形式に合わせて正規表現を修正することができます。