使用PHP Simple HTML Dom提取列表所有图片遇阻求助
解决PHP Simple HTML Dom提取所有轮播图片的问题
你已经成功拿到第一张图片了,要获取所有<ul class="slides">下的图片其实很简单——只需要去掉find方法里的索引参数,然后遍历所有匹配到的元素就行。
原因分析
你当前的代码里find('ul.slides li img',0)的第二个参数0是指定只返回第一个匹配的元素,所以只能拿到第一张图。如果省略这个参数,find会返回所有符合选择器的元素组成的数组,我们只需要循环这个数组就能提取所有图片的src了。
完整解决方案代码
// 获取ul.slides下所有li中的img元素 $all_images = $d1->find('ul.slides li img'); // 先检查是否找到图片元素 if (!empty($all_images)) { $slides_images = []; // 遍历每个图片元素,提取src属性 foreach ($all_images as $img) { $clean_src = trim($img->src); // 如果需要把相对路径转成绝对路径,可以在这里拼接域名 // $clean_src = 'https://www.webpage.com' . $clean_src; $slides_images[] = $clean_src; } // 输出结果,或者按需使用这个数组 print_r($slides_images); } else { echo "未找到任何轮播图片"; }
额外提示
- 确保你的选择器
ul.slides li img和页面的HTML结构完全匹配,比如有没有嵌套层级问题,或者class名拼写错误; - 如果图片的
src是相对路径,你可以根据页面域名手动拼接成绝对URL,代码里我加了注释示例; - 遍历过程中可以加额外的判断,比如检查
$img->src是否为空,避免无效值存入数组。
内容的提问来源于stack exchange,提问作者trademark
相关产品推荐
相关产品推荐

