近日博主发现网站里的必应每日图片获取不到,于是抽时间看了一下代码,本以为必应官方可能调整了获取方式,之后通过json方式发现可以正常解析打开。
然后仔细看了一下获取的json代码,通过解析发现其实是官方修改了url地址,省略了url里原来的官网前缀网址,即cn.bing.com,其他图片描述、日期等信息未调整。
找到问题,那就知道如何调整修改。那就是获取到的url地址里,人为手动添加前缀地址,这样获取的图片网址才完整,才能正常显示。
那就在代码里定义一个函数,赋值为"http://cn.bing.com",与获取的url地址合并组合到一起即可,具体代码如下:
<?php
$str = file_get_contents('http://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1');
$array = json_decode($str);
$imgurl1 = $array->{"images"}[0]->{"url"};
$imgurl2 = "http://cn.bing.com";
$imgurl = $imgurl2.$imgurl1;
echo $imgurl;
?>
这样,就可以正常获取官方图片地址了,当然主机也要打开file_get_contents函数,否则也是获取不到。
自动获取的图片是英文地址及英文描述的解决办法:
如果大家的网站架设在国外的服务器或者VPS上面,那有可能通过以上网址获取的是英文解析,同时图片滞后一天,那么为了使获取的变为中文地址,就有两种办法:
1.联系提供商或直接修改自己的VPS服务器时间为北京时间(此方法我试过,貌似不行,因为必应好像是根据IP地址来判断中英文的,而非本地时间)
2.获取的地址后面增加中文参数判断,也就是在地址后面增加“mkt=zh-cn”,即
http://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=zh-cn
增加中文判断后,通过以上地址就可以强制解析为中文图片及描述。
文章评论