#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" }
с помощью CURL3. каков точный код для этого?
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 или нет