2

WordPress を実行するのに十分な量の PHP がインストールされているサーバーに着信する JSON データを読み取りたいと考えています。新しい .php ファイルを作成できますが、まだ存在しないライブラリを追加するための管理者権限がありません。

この状況で http リクエストから JSON データを取得して解析する最も簡単な方法は何ですか?

4

3 に答える 3

5

ポインタをありがとう、すべてですが、私が探していた答えははるかに単純なものでした. 必要な 2 行のコードは次のようになります。

$json_data = file_get_contents("php://input");
$json_data = json_decode($json_data, true);

1 行目: ページにヒットする json データを取得します。2 行目: 適切なハッシュに解析します。

于 2013-03-28T16:18:38.577 に答える
4

WordPress のコンテキスト内でこれを行う場合は、組み込みの HTTP ヘルパー関数 ( http://codex.wordpress.org/HTTP_API ) を使用する必要があります。curl よりも単純です。例:

$response = wp_remote_get( $url );
if( is_wp_error( $response ) ) {
   $error_message = $response->get_error_message();
   echo "Something went wrong: $error_message";
} else {
   echo 'Response:<pre>';
   print_r( $response );
   echo '</pre>';
}

上記は次のようなものを返します。

Array
(
    [headers] => Array
        (
            [date] => Thu, 30 Sep 2010 15:16:36 GMT
            [server] => Apache
            [x-powered-by] => PHP/5.3.3
            [x-server] => 10.90.6.243
            [expires] => Thu, 30 Sep 2010 03:16:36 GMT
            [cache-control] => Array
                (
                    [0] => no-store, no-cache, must-revalidate
                    [1] => post-check=0, pre-check=0
                )

            [vary] => Accept-Encoding
            [content-length] => 1641
            [connection] => close
            [content-type] => application/php
        )
    [body] => {"a":1,"b":2,"c":3,"d":4,"e":5}
    [response] => Array
        (
            [code] => 200
            [message] => OK
        )

    [cookies] => Array
        (
        )

)

次に、json_decode() を使用して json を配列に変更できます: http://www.php.net/manual/en/function.json-decode.php

于 2013-03-28T01:28:11.307 に答える
2

cURL と json_decode を使用すると、次のようになります。Wordpress を実行している場合は、これらが利用できる可能性があります。

$session = curl_init('http://domain.com/'); // HTTP URL to the json resource you're requesting
curl_setopt($session, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
$json = json_decode(curl_exec($session));
curl_close($session);
echo $json;
于 2013-03-28T00:03:27.027 に答える