Декодирование Json отображается как NULL

#php #json

#php #json

Вопрос:

 #input url
$url = 'http://www.example.com';

#get the data
$json = file_get_contents($url);
$contents = utf8_encode($json); 

#convert to php array
$php_array = json_decode($json);
var_dump($php_array); 
exit;
 

Я пытаюсь декодировать веб-сайт, но как только я его декодирую, моя страница отображается как NULL, кто-нибудь знает, как я могу это исправить? Спасибо

Комментарии:

1. Не могли бы вы добавить примерное содержимое $json ?

2. получение этого array(3) { ["timestamp"]=> string(8) "10:19:12" ["error_num"]=> int(404) ["error_msg"]=> string(20) "File Not Found Error" } с помощью CURL

3. каков точный код для этого?

4. пример, приведенный ниже

Ответ №1:

В вашем случае http://www.example.com этот URL-адрес возвращает ошибку 404. итак file_get_contents($url) , получите null значение.

 $url = 'http://www.example.com';
$json = file_get_contents($url); // HTTP 404
echo $json; //returns null
 

Это работает нормально

 <?php

$url = 'http://www.example.com';
// create curl resource
$ch = curl_init();

// set url
curl_setopt($ch, CURLOPT_URL, $url);

//return the transfer as a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// $output contains the output string
$output = curl_exec($ch);

// close curl resource to free up system resources
curl_close($ch);

$php_array = json_decode($output, true); // true for returning to an array

echo "<pre>";
print_r($php_array);
echo "</pre>";
 

Дополнительный совет:
Я тоже null иногда сталкивался с проблемой. Вы можете попросить json_last_error() получить определенную информацию.

Комментарии:

1. @Tim проверьте этот ответ

2. Это не помогло.

3. предоставленная вами ссылка выдает ошибку HTTP 404. таким образом, оно возвращает нулевое значение, и вы не можете json_decode нулевое значение @Tim

4. Неужели нет никакого способа обойти это?

5. этот комментарий очень важен <?php phpinfo(); ?> 🙂 мой голос 4 u

Ответ №2:

Вы можете использовать запрос CURL здесь:

Пример:

 <?php
$url = 'http://www.example.com'; // your url
$ch = curl_init(); // initiate
curl_setopt($ch, CURLOPT_URL,$url); // curl url
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$result = curl_exec($ch); // curl output
$php_array = json_decode($result,true);
var_dump($php_array); 
?>
 

Вывод:

 array(3) { ["timestamp"]=> string(8) "10:38:38" ["error_num"]=> int(404) ["error_msg"]=> string(20) "File Not Found Error" } 
 

CURL предоставляет вам больше возможностей для извлечения удаленного содержимого и проверки ошибок, чем для file_get_content .

Комментарии:

1. ничего подобного. Пришлите мне свой файл со ссылкой, и я скачаю его, чтобы попробовать ваш.

2. @Tim: я просто копирую и вставляю свой код здесь.. вам нужно выбрать, установлен curl или нет