Php 正在提取外部网站的内容类型,并将JSON文件上的值保存为";空";
我试图提取外部网站的编码并将其保存在JSON文件(UTF-8)中 在我尝试“www.secra.de”之前,它一直运行良好。它将此页面中的值保存为Null 正如我所看到的,在“内容类型”上获得的值不止一个,我认为这可能是重定向,但我不确定 解决问题的最佳方法是什么?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('
$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);}