自己在wordpress里写的一个函数,读取七牛中图片的exif信息。
提取文章中的所有图片,放入数组中,依序输出数组中的图片地址,并拼凑带有?exif参数的url,循环输出中,拼凑的url能完整echo出来,但fread()却是NULL,问题出在哪儿呢?
单独赋值带有?exif的图片地址给$url,却可以正常显示数据,是图片地址传参有问题?还是url拼凑有问题?还是在数组中提取图片地址传递有问题?
function get_all_image($content){
preg_match_all('/<img.*?(?: |\\t|\\r|\\n)?src=["\'""]?(.+?)["\'""]?(?:(?: |\\t|\\r|\\n)+.*?)?>/sim', $content, $images, PREG_PATTERN_ORDER);
if(count($images["1"])>0){
echo '<div class="hidden-container">';
for($i=0;$i<count($images["1"]);$i++){ //提取图片
$next_img=$images["1"]["$i"];
echo '<a href="'.$next_img.'" class="highslide" onclick="return hs.expand(this, { thumbnailId:\'thumb1\' })"></a><div class="highslide-caption">'.exif_info($next_img).'</div>';
}
echo '</div>';
}else{
echo 'no picture!';
}
}
function exif_info($img){
$url = sprintf("%s?exif",$img);
//$url = $img.'?exif';
//$url="http://opmst5o2g.bkt.clouddn.com/uploads/2014/03/2cc1786a9e0bf278c7c098ee6f222d35.jpg?exif";
$handle = fopen($url,"rb");
$content = '';
while (!feof($handle)) {
$content .= fread($handle, 10000);
}
fclose($handle);
$EXIF=json_decode($content,true);
echo $url; //这里能输出http://cdn.ainiu.com/a.jpg?exif的地址
echo "<br />";
var_dump($EXIF);} //这里输出NULL
1.您可更换一个url地址,fopen试一下,排查一下是否是url链接的问题。
2.您在php.ini 中是否将 allow_url_fopen 激活。
3.具体有什么报错信息?