Wie verwende ich cURL, um jSON-Daten abzurufen und die Daten zu dekodieren?

Lesezeit: 4 Minuten

[*]
Maaz

Ich habe also einen Link, der ein jSON-Objekt zurückgibt, und ich muss es dekodieren und in PHP in Variablen einfügen.

URL

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

Dies ist das Objekt, das es zurückgibt

{
    "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": ""
                    }
                }
            }
        }
    }
}

Mich interessiert eigentlich nur die

"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,

und schließlich die Nachricht

[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]

Wie kann ich also das jSON-Objekt extrahieren und es in korrekte Variablen in PHP einfügen, die ich später verwenden kann?

Variablen wie: $username, $user_id, $message, $title, $discussionStateund so weiter.

Ich muss nur wissen, wie ich das jSON-Objekt abrufen und dann die Daten in PHP in Variablen extrahieren kann.

Ich kann jetzt das PHP-Array abrufen, aber ich habe einige Probleme beim Aufrufen der richtigen Werte. Hier ist das Array.

Reihe ( [count] => 1 [threads] => Anordnung ( [13] => Anordnung ( [thread_id]
=> 13 [node_id] => 4 How to use cURL to get jSON data and decode the data? => Forenintegration fast abgeschlossen! [reply_count] => 0 [view_count] => 0 [user_id] => 59 [username] => Faron [post_date] => 1369257302 [sticky] => 0 [discussion_state] => sichtbar [discussion_open] => 1 [discussion_type] => [first_post_id] => 23 [first_post_likes] => 0 [last_post_date] => 1369257302
[last_post_id] => 23 [last_post_user_id] => 59 [last_post_username] => Faron [prefix_id] => 1 [content] => Anordnung ( [count] => 1 [content] => Anordnung ( [23] => Anordnung ( [post_id] => 23 [thread_id] => 13 [user_id] => 59 [username] => Faron [post_date] => 1369257302 [message] => Es ist schon eine ganze Weile her, seit wir begonnen haben, die phanime Foren in die Hauptseite zu integrieren. Wir haben jetzt die Integration mit den phanime Foren und der Hauptseite abgeschlossen. Sie werden nicht mehr bemerken, dass phanime auf zwei Plattformen läuft, sondern nur noch auf einer. Unser nächster Schritt ist, die Foren zu thematisieren, damit sie wie die Hauptseite aussehen! [ip_id] => 268
[message_state] => sichtbar [attach_count] => 0 [position] => 0 [likes]
=> 0 [like_users] => a:0:{} [warning_id] => 0 [warning_message] => ) ) ) ) ) )

Nehmen wir nun an, dieses Array wurde benannt $array dann um den Wert des ersten Elements zu erhalten “[count]„Kann ich nicht einfach folgendes sagen: print $array["[count]"] <-- dies gibt einen Fehler zurück.

Was ist mit dem Element, das selbst einen Wert als Array hat, nämlich die [threads] Element. Wie bekomme ich vielleicht die [thread_id] Wert des Elements?

Wie verwende ich cURL um jSON Daten abzurufen und die Daten
Wesley Schleumer de Góes

Ich denke, das wird deine Frage beantworten 😛

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

Verwenden 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));

Verwenden file_get_contents

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

Zugriff

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

Und

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

  • Ich habe die Frage mit der kleinen Schwierigkeit aktualisiert, die ich beim Arbeiten mit dem PHP-Array habe, das von jSON zurückgegeben wird. Bitte lesen Sie den unteren Teil davon, wenn Sie können.

    – Maas

    22. Mai 2013 um 21:30 Uhr

  • Hallo! Dank Ihrer Antwort nähere ich mich einem ähnlichen Problem, aber ich stecke immer noch fest. Haben Sie etwas dagegen, einen Blick darauf zu werfen? stackoverflow.com/questions/28033267/…

    – Leon Gaban

    19. Januar 2015 um 20:54 Uhr

  • Das ist richtig. CURLOPT_RETURNTRANSFER Gib mir das richtige Ergebnis (y) Danke!

    – Ariyadi

    3. April 2017 um 3:19 Uhr

  • Nachdem Sie Stunden damit verbracht haben, die Zeile hinzuzufügen // SSL-Überprüfung deaktivieren curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); gibt das Ergebnis zurück.

    – kt

    6. Juli 2017 um 11:02 Uhr


1646636049 367 Wie verwende ich cURL um jSON Daten abzurufen und die Daten
Dori Zidon

Um das Objekt zu erhalten, müssen Sie cURL nicht verwenden (Sie laden eine andere DLL in den Speicher und haben eine andere Abhängigkeit, es sei denn, Sie brauchen wirklich Curl, ich würde bei integrierten PHP-Funktionen bleiben), Sie können eine einfache PHP-Datei verwenden file_get_contents (url) Funktion:
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);

dann parst json_decode() JSON in ein PHP-Objekt oder ein Array, wenn Sie übergeben true zum zweiten Parameter.
http://php.net/manual/en/function.json-decode.php

Zum Beispiel:

$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

  • Was ist mit der URL? Wie rufe ich das jSON-Objekt überhaupt ab und setze es auf die $json-Variable? Die URL lautet: /api.php?action=getThreads&hash=123fajwersa&node_id=4&order_by=post_date&order=desc&limit=1&grab_content&content_limit=1 Was das jSON-Objekt zurückgibt.

    – Maas

    22. Mai 2013 um 20:41 Uhr

  • Ich habe die Frage mit der kleinen Schwierigkeit aktualisiert, die ich beim Arbeiten mit dem PHP-Array habe, das von jSON zurückgegeben wird. Bitte lesen Sie den unteren Teil davon, wenn Sie können.

    – Maas

    22. Mai 2013 um 21:30 Uhr

  • Das ist falsch. Sie können keine URL an file_get_contents() übergeben … es muss der Dateiname (Pfad) sein.

    – Henrik Petterson

    18. April 2017 um 12:30 Uhr

  • @HenrikPetterson: file_get_contents kann absolut verwendet werden, um eine URL abzurufen, nicht nur lokale Dateien. cURL bietet jedoch mehr Optionen und ist wahrscheinlich eine bessere Option für alle außer den einfachsten Anwendungsfällen. Weitere Informationen finden Sie hier: php.net/manual/en/function.file-get-contents.php

    – Ich brauche Hilfe

    19. Juni 2017 um 23:26 Uhr

1646636050 985 Wie verwende ich cURL um jSON Daten abzurufen und die Daten
Dragxon Xelosr Huncker

Sie können dies für Curl verwenden:

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; 
} 

Dann zum Lesen von Json:

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

Dann :

///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>";
           }

Sie können dies auch verwenden:

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

Hoffe das hat geholfen.

  • das hat mir geholfen. aber ich musste $data durch $data ersetzen[‘result’] in den foreach-Eingaben in meinem Anwendungsfall.

    – Eaweb

    17. Oktober 2018 um 11:10 Uhr

Verwenden Sie diese Funktion: http://br.php.net/json_decode
Dadurch werden automatisch PHP-Arrays erstellt.

1646636051 368 Wie verwende ich cURL um jSON Daten abzurufen und die Daten
Hesham Salama

kannst du auch verwenden

$result = curl_exec($ch);
return response()->json(json_decode($result));

1646636051 880 Wie verwende ich cURL um jSON Daten abzurufen und die Daten
Bido

Sie können dies verwenden:

curl_setopt_array($ch, $options);
$resultado = curl_exec($ch);
$info = curl_getinfo($ch);
print_r($info["url"]);

963750cookie-checkWie verwende ich cURL, um jSON-Daten abzurufen und die Daten zu dekodieren?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy