This tutorial shows you how to get data from a string that contains an JSON object, and use it in PHP, with json_decode().
That object (the JSON string) can be retrieved from an external resource. For example, from an URL address (with file_get_contents(), or cURL) that outputs a string with data in valid JSON object, or from a text file on server, or from database.
<?php $file = 'sitedata.txt'; // path and name of the file // check if the file exists if(file_exists($file)) { $filedata = file_get_contents($file); /* Or, you can add directly the string: $filedata = '{"url": "https://coursesweb.net/", "category": "Web Development", "nr_pages": 400}'; */ // converts the string into an Object of the stdClass class $objson = json_decode($filedata, true); // traverse the object, and outputs each property and its value foreach($objson AS $prop => $val) { echo '<br/>'. $prop .' - '. $val; } } else echo $file .' not exists';Outputs:
$property = 'property_name'; $value = $object->{$property};
<?php // string with JSON object $strjson = '{"url": "https://coursesweb.net/", "category": "Web Development", "nr_pages": 400}'; // converts the string into an Object of the stdClass class $objson = json_decode($strjson); // getting the value of a certain property $url = $objson->url; echo '<br/>'. $url; // getting the value of a property with the name stored in variable $prop = 'category'; $val = $objson->{$prop}; echo '<br/>'. $val;This code will output:
It is important that the string to be a valid JSON object /array, otherwise, the json_decode() function will return False or Null.
<?php // string with JSON object $strjson = '{"url": "https://marplo.net/", "category": "Diverse", "nr_pages": 1500}'; // converts the string into an Associative array $arrjson = json_decode($strjson, true); // Test var_dump($arrjson); // getting the value of a certain element $url = $arrjson['url']; echo '<br/>'. $url; // getting the value of an element with the name stored in variable $elm = 'category'; $val = $arrjson[$elm]; echo '<br/>'. $val;The above example will output:
<?php // string with JSON object, containing another Object, and an Array $strjson = '{ "url": "https://marplo.net/", "category": {"ct1": "Web Development", "ct2": "Web Programming"}, "courses": ["PHP-MySQL", "JavaScript", "HTML", "CSS"] }'; // converts the string into an Associative array $arrjson = json_decode($strjson, true); // Outputs array structure echo '<pre>'; var_export($arrjson); echo '</pre>'; // gets first category "ct1", and the second element in "courses" $ct1 = $arrjson['category']['ct1']; $course2 = $arrjson['courses'][1]; echo $ct1 .'<br/>'. $course2;The above example will output:
array ( 'url' => 'https://marplo.net/', 'category' => array ( 'ct1' => 'Web Development', 'ct2' => 'Web Programming', ), 'courses' => array ( 0 => 'PHP-MySQL', 1 => 'JavaScript', 2 => 'HTML', 3 => 'CSS', ) ) Web Development JavaScript
<?php // string with info from Youtube App $yinfo = 'info = { "title" : "DaOne - povestea noastra (feat. Ewa)", "image" : "http://i.ytimg.com/vi/6UjfTKHQ4vo/default.jpg", "length" : "4", "status" : "serving", "progress_speed" : "", "progress" : "", "ads" : "", "pf" : "http://acef.u.aclst.com/ping.php?video_id=6UjfTKHQ4vo&h=2717", "h" : "a148abf7ef86bab307d50d0d9d6177f0" };'; /* You can get the string from Youtube Api using this code: $url = 'http://www.youtube-mp3.org/api/itemInfo/?video_id=6UjfTKHQ4vo&adloc=&r={{datetime}}'; $yinfo = file_get_contents($url); */ // gets only the substring with valid JSON if(preg_match('/{(.*?)}/i', $yinfo, $infojson)) { // converts the valid JSON string into an Associative array $arrjson = json_decode($infojson[0], true); // gets and outputs title and image data $title = $arrjson['title']; $imgsrc = $arrjson['image']; echo $title .'<br/>'. $imgsrc; }
<ul> <li>http://coursesweb.net/html/</li> <li>http://coursesweb.net/css/</li> </ul>
.some_class { display: list-item; }
var obj = { "courses": ["php", "javascript", "ajax"] }; var jsonstr = JSON.stringify(obj); alert(jsonstr); // {"courses":["php","javascript","ajax"]}
$strhtml = '<body><div id="dv1">CoursesWeb.net</div></body>'; $dochtml = new DOMDocument(); $dochtml->loadHTML($strhtml); $elm = $dochtml->getElementById("dv1"); echo $elm->nodeValue; // CoursesWeb.net