JSON ডেটা পেতে এবং ডেটা ডিকোড করতে সিআরএল কীভাবে ব্যবহার করবেন?


96

সুতরাং আমার কাছে একটি লিঙ্ক রয়েছে যা একটি জেএসওএন অবজেক্টকে ফেরত দেয় এবং আমার এটি ডিকোড করে পিএইচপি-র ভেরিয়েবলগুলিতে স্থাপন করা দরকার।

ইউআরএল

api.php?action=getThreads&hash=123fajwersa&node_id=4&order_by=post_date&order=desc&limit=1&grab_content&content_limit=1

এটি সেই বস্তু যা এটি ফিরে আসে

{
    "count": 1,
    "threads": {
        "38752": {
            "thread_id": 38752,
            "node_id": 4,
            "title": "The ShadyCraft Beta Launch!",
            "reply_count": 45,
            "view_count": 946,
            "user_id": 2,
            "username": "Shady",
            "post_date": 1366956695,
            "sticky": 0,
            "discussion_state": "visible",
            "discussion_open": 1,
            "discussion_type": "",
            "first_post_id": 226167,
            "first_post_likes": 7,
            "last_post_date": 1369094302,
            "last_post_id": 228226,
            "last_post_user_id": 2,
            "last_post_username": "Shady",
            "prefix_id": 19,
            "tinhte_xentag_tags": "a:4:{i:0;s:9:\"minecraft\";i:2;s:4:\"news\";i:3;s:14:\"private server\";i:1;s:10:\"shadycraft\";}",
            "content": {
                "count": 1,
                "content": {
                    "226167": {
                        "post_id": 226167,
                        "thread_id": 38752,
                        "user_id": 2,
                        "username": "Shady",
                        "post_date": 1366956695,
                        "message": "[ATTACH=full]4143[\/ATTACH]\n \nWe've completely restructured ShadyCraft, and today will be the launch of the ShadyCraft beta.\n \nCurrent Features\n[LIST]\n[*]Towns\n[*]Nations\n[*]All out wars\n[*]A live update map\n[*]No White-list\n[*]Earn Money\n[*]Griefing allowed where possible\n[\/LIST]\nThese are just some features which have a lot more things behind them. For instance, there is town and nation upkeep, tax, kingdoms, mayors, and kings.\n \nWe really wanted to have the server self-governed and this is why griefing and PvP are allowed where ever they are possible. All towns and nations cannot be griefed by other members. You can create a town and buy plots for it and expand the town as you wish.\n \n[SIZE=4]All of this is shown in the live updating map located [URL='http:\/\/50.7.6.116:8123']here[\/URL].[\/SIZE]\n \n[SIZE=4][SIZE=6]Join the Beta Now[\/SIZE][\/SIZE]\n[SIZE=6]Server-IP: 50.7.6.116[\/SIZE]\n \n \n[USER=118053]Frenchy[\/USER] and [USER=4863]Wolfbane[\/USER]",
                        "ip_id": 747429,
                        "message_state": "visible",
                        "attach_count": 1,
                        "position": 0,
                        "likes": 7,
                        "like_users": "a:5:{i:0;a:2:{s:7:\"user_id\";i:105699;s:8:\"username\";s:6:\"kvothe\";}i:1;a:2:{s:7:\"user_id\";i:146724;s:8:\"username\";s:12:\"Graveyard219\";}i:2;a:2:{s:7:\"user_id\";i:70182;s:8:\"username\";s:9:\"wmbrown18\";}i:3;a:2:{s:7:\"user_id\";i:5473;s:8:\"username\";s:9:\"Oblivious\";}i:4;a:2:{s:7:\"user_id\";i:118053;s:8:\"username\";s:7:\"Frenchy\";}}",
                        "warning_id": 0,
                        "warning_message": "",
                        "anonymous_posting_real_user_id": 0,
                        "anonymous_posting_real_username": ""
                    }
                }
            }
        }
    }
}

আমি সত্যিই শুধুমাত্র আগ্রহী

"title":"The ShadyCraft Beta Launch!",  
"reply_count:"45, 
"view_count": 946,  
"user_id":2, 
"username":"Shady", 
"post_date":1366956695, 
"sticky":0, 
"discussion_state":"visible",
"discussion_open":1,

এবং অবশেষে বার্তা

[ATTACH=full]4143[/ATTACH]

We've completely restructured ShadyCraft, and today will be the launch of the ShadyCraft beta.

Current Features
[LIST]
[*]Towns
[*]Nations
[*]All out wars
[*]A live update map
[*]No White-list
[*]Earn Money
[*]Griefing allowed where possible
[/LIST]
These are just some features which have a lot more things behind them. For instance, there is town and nation upkeep, tax, kingdoms, mayors, and kings.

We really wanted to have the server self-governed and this is why griefing and PvP are allowed where ever they are possible. All towns and nations cannot be griefed by other members. You can create a town and buy plots for it and expand the town as you wish.

[SIZE=4]All of this is shown in the live updating map located [URL='http://50.7.6.116:8123']here[/URL].[/SIZE]

[SIZE=4][SIZE=6]Join the Beta Now[/SIZE][/SIZE]
[SIZE=6]Server-IP: 50.7.6.116[/SIZE]


[USER=118053]Frenchy[/USER] and [USER=4863]Wolfbane[/USER]

তাহলে আমি কীভাবে jSON অবজেক্টটি এক্সট্র্যাক্ট করে পিএইচপি-তে ভেরিয়েবলগুলি সংশোধন করতে রাখতে পারি, যা আমি পরে ব্যবহার করতে পারি?

ভেরিয়েবল পছন্দ: $username, $user_id, $message, $title,$discussionState , এবং তাই।

আমি কেবল জেএসএএন অবজেক্টটি কীভাবে পুনরুদ্ধার করতে পারি তা জানতে হবে, তারপরে পিএইচপি-তে ভেরিয়েবলগুলিতে ডেটা উত্তোলন করতে হবে।

আমি এখন পিএইচপি অ্যারে পেতে সক্ষম হয়েছি, তবে সঠিক মানগুলি বলায় আমার কিছু সমস্যা হচ্ছে। এখানে অ্যারে।

ফ্যানিম ফোরামগুলি মূল সাইটের সাথে সংহত করতে শুরু করার পরে বেশ কিছুক্ষণ হয়ে গেল। আমরা এখন ফানিম ফোরাম এবং মূল সাইটের সাথে সংহতকরণ শেষ করেছি। আপনি আর খেয়াল করতে পারবেন না যে দুটি প্ল্যাটফর্ম ফ্যানাইম চলমান রয়েছে, তবে পরিবর্তে কেবল একটি। আমাদের পরবর্তী পদক্ষেপটি ফোরামগুলি মূল সাইটের মতো দেখানোর জন্য থিম করা! [আইপি_আইডি] => ২ [৮ [বার্তা_স্তাদ] => দৃশ্যমান [সংযুক্ত_কাউন্ট] => 0 [অবস্থান] => 0 [পছন্দ] => 0 [মত_ ব্যবহারকারী] => এ: 0: {} [সতর্কতা_ আইডি] => 0 [সতর্কতা_মেসেজ] =>)))))))

এখন বলি $arrayযে প্রথম অ্যারের মান "[গণনা]" পাওয়ার জন্য এই অ্যারেটির নাম দেওয়া হয়েছিল তখন আমি কেবল নিম্নলিখিতটি বলতে পারি না: print $array["[count]"] <- এটি ত্রুটি প্রদান করে।

উপাদান একটি অ্যারের নিজেই, যা একটি মূল্য আছে সম্পর্কে কি [threads]উপাদান। আমি কীভাবে পেতে পারি, সম্ভবত [thread_id]উপাদানটির মান?

উত্তর:


267

আমি মনে করি এটি আপনার প্রশ্নের উত্তর দেবে: পি

$url="https://.../api.php?action=getThreads&hash=123fajwersa&node_id=4&order_by=post_date&order=‌​desc&limit=1&grab_content&content_limit=1";

ব্যবহার cURL

//  Initiate curl
$ch = curl_init();
// Will return the response, if false it print the response
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Set the url
curl_setopt($ch, CURLOPT_URL,$url);
// Execute
$result=curl_exec($ch);
// Closing
curl_close($ch);

// Will dump a beauty json :3
var_dump(json_decode($result, true));

ব্যবহার file_get_contents

$result = file_get_contents($url);
// Will dump a beauty json :3
var_dump(json_decode($result, true));

অ্যাক্সেস করা হচ্ছে

$array["threads"][13/* thread id */]["title"/* thread key */]

এবং

$array["threads"][13/* thread id */]["content"/* thread key */]["content"][23/* post id */]["message" /* content key */];

4
আমি পিএসএইচপি অ্যারের সাথে কাজ করে যা জেএসওএন দ্বারা ফিরিয়ে দেওয়া হয়েছে তা নিয়ে আমি সমস্যাটি আপডেট করেছি। পারলে দয়া করে এর নীচের অংশটি পড়ুন।
মাজ

ওহে! আমি আপনার উত্তরের অনুরূপ একই সমস্যার সাথে ঘনিষ্ঠ হয়েছি, তবে এখনও আটকে আছি, আপনি কি একবার নজর দিতে চান? stackoverflow.com/questions/28033267/…
লিওন গাবান

সেটা ঠিক. CURLOPT_RETURNTRANSFERআমাকে সঠিক ফলাফল দিন (y) ধন্যবাদ!
আরিয়ান্দি

ঘন্টা ব্যয় করার পরে, লাইনটি যুক্ত করে // এসএসএল যাচাইকরণ অক্ষম করুন curl_setopt ($ ch, CURLOPT_SSL_VERIFYPEER, মিথ্যা); ফল দেয়।
কেটি

10

অবজেক্টটি পেতে আপনাকে সিআরএল ব্যবহার করার দরকার নেই (আপনি অন্য ডিএল মেমরিতে লোড করছেন এবং অন্য একটি নির্ভরতা থাকতে হবে, যদি না আপনি যদি পিএইচপি ফাংশনগুলিতে অন্তর্নির্মিত থাকতেন তবে কার্লের প্রয়োজন না হয়), আপনি একটি সাধারণ পিএইচপি ফাইল_জেট_কন্টেন্টস (ইউআরএল) ব্যবহার করতে পারেন ফাংশন: http://il1.php.net/manual/en/function.file-get-contents.php

$unparsed_json = file_get_contents("api.php?action=getThreads&hash=123fajwersa&node_id=4&order_by=post_date&order=desc&limit=1&grab_content&content_limit=1");

$json_object = json_decode($unparsed_json);

তারপরে json_decode () JSON কে একটি PHP অবজেক্টে পার্স করে, বা আপনি যদি trueদ্বিতীয় প্যারামিটারে পাস করেন তবে একটি অ্যারে । http://php.net/manual/en/function.json-decode.php

উদাহরণ স্বরূপ:

$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';

var_dump(json_decode($json));           // Object
var_dump(json_decode($json, true));     // Associative array

ইউআরএল সম্পর্কে কি? আমি কীভাবে প্রথম স্থানে jSON অবজেক্টটি পুনরুদ্ধার করব এবং এটিকে son json ভেরিয়েবলে সেট করব? Url হ'ল: /api.php?action=getThreads&hash=123fajwersa&node_id=4&order_by=post_date&order=desc&limit=1&grab_content&content_limit=1 যা jSON অবজেক্টটি প্রদান করে।
মাআজ

4
আমি পিএসএইচপি অ্যারের সাথে কাজ করে যা জেএসওএন দ্বারা ফিরিয়ে দেওয়া হয়েছে তা নিয়ে আমি সমস্যাটি আপডেট করেছি। পারলে দয়া করে এর নীচের অংশটি পড়ুন।
মাজ

এটি ভুল। আপনি ফাইল_গেট_কন্টেন্টস () এ কোনও URL পাস করতে পারবেন না ... এটির ফাইলের নাম (পথ) হওয়া দরকার।
হেনরিক পিটারসন

@ হেনরিকপিটারসন: ফাইল-গেট_কন্টেন্টগুলি কেবল স্থানীয় ফাইলই নয়, একটি ইউআরএল আনতে ব্যবহার করা যেতে পারে। যদিও সিআরএল আরও বিকল্প সরবরাহ করে এবং সম্ভবত সবচেয়ে সহজ ব্যবহারের ক্ষেত্রে তবে এটি সর্বোত্তম বিকল্প। আরও তথ্যের জন্য এখানে দেখুন: php.net/manual/en/function.file-get-contents.php
inidedhelp

7

আপনি এটি কার্লের জন্য ব্যবহার করতে পারেন:

function fakeip()  
{  
    return long2ip( mt_rand(0, 65537) * mt_rand(0, 65535) );   
}  

function getdata($url,$args=false) 
{ 
    global $session; 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL,$url); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, array("REMOTE_ADDR: ".fakeip(),"X-Client-IP: ".fakeip(),"Client-IP: ".fakeip(),"HTTP_X_FORWARDED_FOR: ".fakeip(),"X-Forwarded-For: ".fakeip())); 
    if($args) 
    { 
        curl_setopt($ch, CURLOPT_POST, 1); 
        curl_setopt($ch, CURLOPT_POSTFIELDS,$args); 
    } 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    //curl_setopt($ch, CURLOPT_PROXY, "127.0.0.1:8888"); 
    $result = curl_exec ($ch); 
    curl_close ($ch); 
    return $result; 
} 

তারপরে জেসন পড়ুন:

$result=getdata("https://example.com");

তারপরে:

///Deocde Json
$data = json_decode($result,true);
///Count
             $total=count($data);
             $Str='<h1>Total : '.$total.'';
             echo $Str;
//You Can Also Make In Table:
             foreach ($data as $key => $value)
              {
          echo '  <td><font  face="calibri"color="red">'.$value[type].'   </font></td><td><font  face="calibri"color="blue">'.$value[category].'   </font></td><td><font  face="calibri"color="green">'.$value[amount].'   </font></tr><tr>';

           }
           echo "</tr></table>";
           }

আপনি এটি ব্যবহার করতে পারেন:

echo '<p>Name : '.$data['result']['name'].'</p>
      <img src="'.$data['result']['pic'].'"><br>';

আশা করি এটি সাহায্য করেছে।


এটি আমাকে সাহায্য করেছে। তবে আমার ব্যবহারের ক্ষেত্রে ফরচ ইনপুটগুলিতে আমাকে $ ডেটা [ডেটা ['ফলাফল'] দিয়ে প্রতিস্থাপন করতে হয়েছিল।
ইওয়েব



আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.