Entonces tengo un enlace que devuelve un objeto jSON, y necesito decodificarlo y ponerlo en variables en PHP.
URL
api.php?action=getThreads&hash=123fajwersa&node_id=4&order_by=post_date&order=desc&limit=1&grab_content&content_limit=1
Este es el objeto que devuelve
{
"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": ""
}
}
}
}
}
}
Realmente solo estoy interesado en el
"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,
y finalmente el mensaje
[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]
Entonces, ¿cómo puedo extraer el objeto jSON y ponerlo en las variables correctas en PHP, que luego puedo usar?
Variables como: $username
, $user_id
, $message
, $title
, $discussionState
, y así sucesivamente.
Solo necesito saber cómo puedo recuperar el objeto jSON y luego extraer los datos en variables en PHP.
Ahora puedo obtener la matriz de PHP, pero tengo algunos problemas para llamar a los valores correctos. Aquí está la matriz.
Ha pasado bastante tiempo desde que comenzamos a integrar los foros de phanime con el sitio principal. Ahora hemos terminado la integración con los foros de phanime y el sitio principal. Ya no notará que hay dos plataformas que ejecutan phanime, sino solo una. ¡Nuestro siguiente paso es crear un tema para los foros para que parezca el sitio principal! [ip_id] => 268 [message_state] => visible [attach_count] => 0 [position] => 0 [likes] => 0 [like_users] => a: 0: {} [warning_id] => 0 [warning_message] =>))))))
Ahora digamos que esta matriz se nombró $array
entonces para obtener el valor del primer elemento "[cuenta]". No puedo simplemente decir lo siguiente: print $array["[count]"]
<- esto devuelve un error.
¿Qué pasa con el elemento que tiene un valor como una matriz en sí, que es el [threads]
elemento? ¿Cómo obtengo, quizás el [thread_id]
valor del elemento?
CURLOPT_RETURNTRANSFER
dame el resultado correcto (y) ¡Gracias!para obtener el objeto, no necesita usar cURL (está cargando otro dll en la memoria y tiene otra dependencia, a menos que realmente necesite curl, me quedaría con las funciones php integradas), puede usar un archivo php simple_get_contents (url) función: 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);
luego json_decode () analiza JSON en un objeto PHP, o una matriz si pasa
true
al segundo parámetro. http://php.net/manual/en/function.json-decode.phpPor ejemplo:
$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
fuente
/api.php?action=getThreads&hash=123fajwersa&node_id=4&order_by=post_date&order=desc&limit=1&grab_content&content_limit=1
que devuelve el objeto jSON.Puedes usar esto para Curl:
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; }
Luego para leer Json:
$result=getdata("https://example.com");
Entonces :
///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>"; }
También puedes usar esto:
echo '<p>Name : '.$data['result']['name'].'</p> <img src="'.$data['result']['pic'].'"><br>';
Espero que esto haya ayudado.
fuente
Utilice esta función: http://br.php.net/json_decode Esto creará automáticamente matrices PHP.
fuente
también puedes usar
$result = curl_exec($ch); return response()->json(json_decode($result));
fuente
Puedes usar esto:
curl_setopt_array($ch, $options); $resultado = curl_exec($ch); $info = curl_getinfo($ch); print_r($info["url"]);
fuente