2017-04-14 5 views
-2

titleという属性値ペアを1つだけ試そうとしています。UPCitemdb APIからPHPのJSONから特定の値を取得する

これはWebサイトのサンプルコードで、JSONデータ全体を返します。どのように私はそれをちょうどタイトルを返すように取得し、PHPの文字列変数としてそれを格納するのですか?

<<?php 
$user_key = 'only_for_dev_or_pro'; 
$endpoint = 'https://api.upcitemdb.com/prod/trial/lookup'; 

$ch = curl_init(); 

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_HEADER, 1); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_MAXREDIRS, 5); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array(

)); 

// HTTP GET 
curl_setopt($ch, CURLOPT_POST, 0); 
curl_setopt($ch, CURLOPT_URL, $endpoint.'?upc=4002293401102'); 
$response = curl_exec($ch); 
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
if ($httpcode != 200) 
    echo "error status $httpcode...\n"; 
else 
    echo $response."\n"; 
/* if you need to run more queries, do them in the same connection. 
* use rawurlencode() instead of URLEncode(), if you set search string 
* as url query param 
*/ 
sleep(2); 
// proceed with other queries 
curl_close($ch); 

JSON:

HTTP/1.1 200 OKサーバー:openresty/1.9.7.4日付:金、2017年4月14日14時33分27秒GMTのコンテンツタイプ:アプリケーション/ JSON。 X-RateLimit-Limit:100 X-RateLimit-Reset:1492263082 X-RateLimit-Remaining:87 ETag:W/baa-8コンテンツ長:2986接続:キープアライブX-Powered-By:アクセス制御許可ヘッダー:Content-Type、Accept Access-Control-Expose-Headers:アクセス制御許可ヘッダー:アクセス制御許可ヘッダー:アクセス制御許可ヘッダー:アクセス制御許可ヘッダー: X-RateLimit-Limit、X-RateLimit-Reset、合計、オフセット(「コード」:「OK」、「合計」:1、「オフセット」:0、「アイテム」: 「Wusthof Gourmet 3-inch Serving Paringナイフ」、「説明」:「Wusthof Gourmetスタンプナイフは、新しい料理家や2番目の家庭で使用するのに最適です。高価なナイフは非常にシャープです。高炭素ステンレス鋼のおかげで、その鋭いエッジは長持ちしますトリプルリベットハンドルは非常に耐久性があります手洗いのみ通常の使用と適切なケアでWusthofからの生涯保証Made in in Solingen Germany。 、 "ブランド": "W?s 「サイズ」「サイズ」「寸法」「8×1×1インチ」「重量」「0.1ポンド」「サイズ」「サイズ」: [http://www.chefscatalog.com/img/products/500x500/99528_500.jpg "、" http://img1.r10.io/PIC/84707643/0/1/250/84707643.jpg "、" http://c.shld.net/rpx/i/s/pi/mp/33108/2456981411?src=http%3A%2F%2Fwww.chefscatalog.com%2Fimg%2Fproducts%2F1000x1000%2F99528_1000.jpg&d=8ba15ee3bfc8785ae78e62c3c0762bcb86214ed4 "、" http://images10.newegg.com/ProductImageCompressAll200/A0NV_1_20120523_5340513.jpg "、" http://images.prosperentcdn.com/images/250x250/cdn.metrokitchen.com/images/uploads/wu-4011-zoomed.jpg "]、"オファー ":[{" "merchant": "MetroKitchen "、"ドメイン ":" metrokitchen.com "、"タイトル ":" Wusthofグルメ3インチの鋸歯状ナイフ "、"通貨 ":" "、" list_price ":" "、" price ":19.95、" shipping ": "" ""、 "" ""、 ""、 "": ""、 "" ""、 "" "" Newegg .com "、" title ":" Wusthof Gourmet - 3 "Serrated Utility Knife"、 "currency": ""、 "list_price": ""、 "price":15.95、 "shipping": "5.95"、 "condition" {"merchants": "Sears"、 "domain": "sears.com"、 "title"}: "新しい"、 "可用性": ""、 "リンク": "http://www.upcitemdb.com/norob/alink/?id=v2t2z2u2v2x2c4a4&tid=1&seq=1492180407&plt=353d82b7403f611d0a99d3a14c1aeba2"、 "updated_t":1481154945} : "Wusthof Gourmet 3-in。 19.95、 "出荷": ""、 "条件": "新規"、 "可用性": ""、 "リンク" : "http://www.upcitemdb.com/norob/alink/?id=u2p2631343x2a4d4x2&tid=1&seq=1492180407&plt=47ce957e7b574db04285b40e11ed5816"、 "updated_t":1425619323}、 "楽天(Buy.com)"、 "ドメイン": "rakuten.com"、 "title": "Wusthof Gourmet - 3 Serrated Utility Knife" 19.95、 "配送": "8.95"、 "条件": "新規"、 "空き状況": ""、 "リンク": "http://www.upcitemdb.com/norob/alink/?id=w2v233w21303c444&tid=1&seq=1492180407&plt=57e9f7ffdcf388e9c3c4e81403c0ddc9" "通貨": ""、 "list_price" 、 "updated_t":1476903025}、{"merchant": "Chefs Catalog"、 "domain": "chefscatalog.com"、 "title": "Wusthof Gourmet 3-in。 26 "、" price ":15.95、" shipping ":"送料無料 "、"条件 ":"新規 "、"空室状況 ":" "、"通貨 ":" "、" list_price " 、 "リンク": "http://www.upcitemdb.com/norob/alink/?id=u2o243z2w203b454s2&tid=1&seq=1492180407&plt=b3a67678a759c8e8d949c4e7b26d0207"、 "updated_t":1448989675}]、 "ASIN": "B0000DJYE3"、 "ELID": "192088094351"}]}

+0

あなたはあなたの 'json'を共有できますか? –

+0

@SahilGulati更新 – thenoob

+0

ありません。名前のタイトルを持つキーのどれがほしい?商品やオファーのために? –

答えて

2

これを試してください。カールレスポンスでヘッダーを返さないようにするには、curl_setopt($ch, CURLOPT_HEADER, false);を使用してください。

<?php 
ini_set('display_errors', 1); 
$user_key = 'only_for_dev_or_pro'; 
$endpoint = 'https://api.upcitemdb.com/prod/trial/lookup'; 

$ch = curl_init(); 

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_HEADER, 1); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_MAXREDIRS, 5); 
curl_setopt($ch, CURLOPT_HEADER, false); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array(

)); 

curl_setopt($ch, CURLOPT_POST, 0); 
curl_setopt($ch, CURLOPT_URL, $endpoint.'?upc=4002293401102'); 
$response = curl_exec($ch); 
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
if ($httpcode != 200) 
    echo "error status $httpcode...\n"; 
else 
// echo $response."\n"; 

/* if you need to run more queries, do them in the same connection. 
* use rawurlencode() instead of URLEncode(), if you set search string 
* as url query param 
*/ 
sleep(2); 
// proceed with other queries 
curl_close($ch); 

$result=json_decode($response,true); 
echo $title=$result['items'][0]["title"]; 
+0

何も印刷されません – thenoob

+0

@thenoob私の投稿からデモを試しました –

+0

デモは動作しますが、手動で$応答に保存していますので、デモで動作します。 – thenoob

1

あなたはjson_decode

を探しています

$例= $ obj-> yourAttribute;

は、JSON文字列

$ OBJ = json_decode($応答)を持つオブジェクトを作成します

foreach($ obj-> items with $ item) $ title = $ item-> title;

+0

全部ではなくtitleと呼ばれる1つの属性値ペアを表示するにはどうすればよいですか? – thenoob

関連する問題