我有一组JSON数据,我想通过PHP把他解析成HTML格式的内容。
其中Uri部分有的是照片,有的是链接。如何增加一个判断,是照片的输出,不是照片的为空。谢谢。
$data = json_decode($json);
foreach ($data->results as $result) {
if(!empty($result->Uri)){
echo '<img src="'.htmlspecialchars($result->Uri).'" />';
}
}

解决方案 »

  1.   

    大部分的图片链接都是以后缀jpg/gif/png等出现的
    如果是urlwrite了话 那么你可以查看下他的命名规律来做filter
      

  2.   

    一般而言,仅通过 URL 这个字符串是无法准确判定其实际内容的(事实上服务器端完全可以根据 URL 以外的其它因素——比如 cookie————来返回不同的内容)。楼上通过匹配 URL 中是否有类似图片文件扩展名的方式,基本可以解决大部分问题。但不能可靠判定,尤其是对于专业提供图片的网站。更可靠一点的办法就是对给定的 URL 做一次内容抓取,抓到啥就是啥,效率虽然低,但可靠性高(但仍然不是百分之百可靠)。
    ————————————————————————————————
    基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)
      

  3.   

    1#的可能就行了,用preg_match_all吗?怎么加到代码里?
      

  4.   


    $imgs_arr = array( "jpg" , "jpeg" , "png" , "gif" );//图片的后缀 ,自己可以添加
    $data = json_decode($json);
    foreach ($data->results as $result) {
        $ext = strtolower(end(explode(".",$result->Uri)));
        if( !empty($ext) && in_array($ext , $imgs_arr)){
           echo '<img src="'.htmlspecialchars($result->Uri).'" />';
        }
    }