Php 正在提取外部网站的内容类型,并将JSON文件上的值保存为";空";

Php 正在提取外部网站的内容类型,并将JSON文件上的值保存为";空";,php,json,null,Php,Json,Null,我试图提取外部网站的编码并将其保存在JSON文件(UTF-8)中 在我尝试“www.secra.de”之前,它一直运行良好。它将此页面中的值保存为Null 正如我所看到的,在“内容类型”上获得的值不止一个,我认为这可能是重定向,但我不确定 解决问题的最佳方法是什么? $domain = "http://www.secra.de"; $info = get_headers($domain, 1)["Content-Type"]; $infostr = explode('

我试图提取外部网站的编码并将其保存在JSON文件(UTF-8)中

在我尝试“www.secra.de”之前,它一直运行良好。它将此页面中的值保存为Null

正如我所看到的,在“内容类型”上获得的值不止一个,我认为这可能是重定向,但我不确定

解决问题的最佳方法是什么?

    $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);
};

问题是
http://www.secra.de
重定向到
https://www.secra.de
,而
get_headers
函数将返回原始请求和重定向请求的内容类型:

[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);

$info
不起作用的值到底是多少…?$info起作用了,我做了一些“测试”,问题是$infostr=explode('=',$info);我想,如果我打印$info,它会显示所有内容类型的值,但是如果我打印$encoding,它会显示“Null”,那么,我重复一遍,
$info
不起作用时的具体值是什么?如果将
$info
替换为
'text/html;charset=utf-8'
,则您的代码工作正常;charset=iso-8859-1[1]=>text/html;字符集=utf-8Wat?你到底从哪里得到这个值的?一个问题,你能解释一下你的这行代码吗?如果(是数组($info)){$info=end($info);}