首页  >  文章  >  后端开发  >  php获取不到图片src

php获取不到图片src

WBOY
WBOY原创
2023-05-07 10:28:11725浏览

随着网络技术的不断发展,网页中不但以文字为主要内容,也逐渐走向图片、音频、视频等多媒体元素的融合。如今,我们访问网页时,更多地借助了这些多媒体元素,它们丰富了我们的审美体验,也让页面更加生动、直观。

其中,图片是最常见的多媒体元素之一。在网页开发中,使用图片可以充实页面内容,丰富用户体验。有时候,我们需要在服务器端获取图片的src地址,以进行相关操作。在php中,获取图片的src地址有许多方法,但可能会遇到一些问题,导致获取失败。本文将详细介绍php获取不到图片src的原因和解决方案。

一、获取图片src的方法

在php中,获取图片的src地址有许多方法,这里介绍两种比较常见的方法。

  1. 使用正则表达式获取图片src

在html中,图片地址的src通常写在img标签中的src属性里。因此,我们可以使用正则表达式获取img标签中的src属性值。

function getImgSrc($html){
    $pattern = '/<img.*?src="(.*?)".*?>/is';
    preg_match_all($pattern, $html, $matches);
    $src_array = $matches[1];
    return $src_array;
}

上面的函数中,$html是一个html页面的字符串形式。使用正则表达式,匹配出html中所有img标签的src属性值,并返回一个数组$src_array,其中存储了所有图片的src地址。

  1. 使用DOMDocument获取图片src

DOMDocument是php中使用XML和HTML文档的主要工具之一。它提供了一系列方法,可以轻松地获取HTML文档中的元素及其属性。我们可以利用DOMDocument获取img标签的src属性值。

function getImgSrc($html){
    $dom = new DOMDocument();
    @$dom->loadHTML($html);
    $xpath = new DOMXPath($dom);
    $src_array = array();
    $img_list = $xpath->query('//img');
    foreach($img_list as $img){
        $src_array[] = $img->getAttribute('src');
    }
    return $src_array;
}

上面的函数中,$html同样是一个html页面的字符串形式。使用DOMDocument,创建一个文档对象$dom,并使用loadHTML方法加载html页面。接着,使用DOMXPath获取所有img标签,再遍历每一个img标签,获取其src属性值。

二、获取失败的原因及解决方案

在使用上述方法获取图片src时,可能会遇到获取失败的情况。以下是几种可能的原因及对应的解决方案。

  1. 传入的html不完整

getImgSrc函数中传入的$html参数应是一个完整的html文档,但有时候,我们只获取了部分页面内容,或者html文档中有一些不完整的标签,则会导致获取失败。此时,我们需要保证传入的html文档完整无误。

  1. 图片src使用了相对路径

有时候,图片的src属性使用的是相对路径,因此,我们在服务器端获取图片时,需要将其转化为绝对路径。可以使用php的dirname函数和parse_url函数,将相对路径转化为绝对路径。

function getAbsoluteUrl($base, $relative){
    $parse_base = parse_url($base);
    if(!isset($parse_base['path'])){
        $parse_base['path'] = '/';
    }
    $dir = dirname($parse_base['path']);
    if($relative[0] == '/'){
        $relative = substr($relative, 1);
    }
    if($relative[0] == '.'){
        $i = 0;
        while(substr($relative, 0, 2) == './'){
            $relative = substr($relative, 2);
        }
        $dir .= '/';
    }
    $result = $parse_base['scheme']."://".$parse_base['host'];
    if(isset($parse_base['port']) && $parse_base['port'] != '80'){
        $result .= ':'.$parse_base['port'];
    }
    $result .= $dir.$relative;
    return $result;
}

上面的函数中,$base为相对路径的基准地址,$relative为相对路径。使用dirname函数获取基准地址的目录路径$dir,然后根据相对路径的情况,拼接出完整的绝对路径。

  1. 网络原因

获取图片src也会受到网络环境的影响。如果网络不稳定或者中断,都会导致获取失败。此时可以尝试重新获取或者等待网络稳定后再次尝试获取。

综上所述,本文介绍了php获取不到图片src的原因及解决方案。在服务器端获取图片src是常见的开发需求,掌握获取方法及遇到问题时的一些解决方法,可以更好的提高开发效率并减少问题带来的影响。

以上是php获取不到图片src的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn