Я пытаюсь извлечь код внешнего веб-сайта и сохранить его в файле JSON (UTF-8).
Он работал хорошо, пока я не попробовал "www.secra.de" сохранить значение с этой страницы как Null.
Как я вижу, это не просто получение значений в «Content-Type», и я думаю, что это могло быть перенаправление, но я не уверен.
Как лучше всего ее решить?
$domain = "http://www.secra.de";
$info = get_headers($domain, 1)["Content-Type"];
$infostr = explode('=', $info);
$encoding = end($infostr);
if (!empty($info)){
$data_array[$key]['encode'] = $encoding;
} else {
$data_array[$key]['encode'] = "It don't have Encode";
}
$json = json_encode($data_array);
file_put_contents('data/data.json', $json);
};
$ info работает, я сделал несколько "тестов", и проблема в том, что $ infostr = explode ('=', $ info); Я думаю, что если я напечатаю $ info, он покажет значения всех Content-Type, но если я напечатаю $ encoding, он покажет "Null"
Итак, я повторяю, какова конкретная ценность $info, когда он не работает? Если вы замените $info на 'text/html; charset=utf-8', тогда ваш код будет работать нормально.
Это значение: text / html; charset = iso-8859-1 [1] => текст / html; charset = utf-8
Wat? Откуда именно вы взяли это значение?
Я получаю это следующим образом: $ info = get_headers ($ domain, 1) ["Content-Type"]; print_r ($ информация); выход;
1) Невозможно воспроизвести. 2) Результатом этого все равно не должно быть null.
Я изменил код своего поста, теперь вы можете воспроизвести его думаю
На www.google.com он работает, но на www.gmail.com он тоже показывает null






Проблема в том, что http://www.secra.de перенаправляет на https://www.secra.de, а функции get_headers возвращают вам Content-Type для оба исходного и перенаправленного запроса:
[Content-Type] => Array
(
[0] => text/html; charset=iso-8859-1
[1] => text/html; charset=utf-8
)
Итак, проблема в том, что вы обрабатываете $info как строку, когда это массив. Исправьте это:
$info = get_headers($domain, 1)["Content-Type"];
if (is_array($info)) {
$info = end($info);
}
$infostr = explode('=', $info);
$encoding = end($infostr);
Один вопрос, вы можете объяснить мне эту строчку вашего кода? если (is_array ($ info)) {$ info = end ($ info); }
В чем именно ценность
$info, который не работает…?