php获取不到图片src

广告:宝塔Linux面板高效运维的服务器管理软件 点击【 https://www.bt.cn/p/uNLv1L 】立即购买

php获取不到图片src

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

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

一、获取图片src的方法

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

使用正则表达式获取图片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地址。

使用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时,可能会遇到获取失败的情况。以下是几种可能的原因及对应的解决方案。

传入的html不完整

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

图片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,然后根据相对路径的情况,拼接出完整的绝对路径。

网络原因

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

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

以上就是php获取不到图片src的详细内容,更多请关注9543建站博客其它相关文章!

广告:SSL证书一年128.66元起,点击购买~~~

9543建站博客
一个专注于网站开发、微信开发的技术类纯净博客。
作者头像
admin创始人

肥猫,知名SEO博客站长,14年SEO经验。

上一篇:常用的PHP数据库连接方法
下一篇:如何在Swoole中使用协程实现高并发的swoole_ftp_rename函数

发表评论

关闭广告
关闭广告