如何使用PHP Simple DOM Parser遍历指定HTML代码?
使用PHP Simple DOM Parser遍历目标HTML的指南
嘿,我来帮你搞定用PHP Simple DOM Parser解析这段HTML的事儿!咱们一步步拆解,把每个部分的内容都精准提取出来。
第一步:准备工作
首先得确保你已经引入了PHP Simple DOM Parser。如果是直接下载的库文件,就用require_once引入;如果用Composer管理依赖,直接通过autoload加载就行。示例代码如下:
// 引入PHP Simple DOM Parser(根据你的文件实际路径调整) require_once('simple_html_dom.php'); // 把目标HTML字符串赋值给变量 $html = '<div class="reviews-summary__stats"> <div class="reviews-summary"> <p class="reviews-title">C</p> <ul class="rating"> <li class="rating__item rating__rated"></li> <li class="rating__item rating__rated"></li> <li class="rating__item rating__rated"></li> <li class="rating__item "></li> <li class="rating__item "></li> </ul> </div> <div class="reviews-summary"> <p class="reviews-title">C...</p></div></div>';
第二步:加载HTML并遍历核心元素
接下来咱们加载HTML内容,然后遍历所有的.reviews-summary容器——这是咱们要处理的核心模块:
// 加载HTML字符串到DOM对象 $dom = str_get_html($html); // 遍历每个reviews-summary模块 foreach ($dom->find('.reviews-summary') as $summary) { // 提取reviews-title的文本内容 $title = $summary->find('.reviews-title', 0)->plaintext; echo "评分标题: " . $title . "\n"; // 处理星级评分(注意第二个模块没有rating列表,所以先判断是否存在) $ratingList = $summary->find('.rating', 0); if ($ratingList) { // 统计已点亮的星级数量(带rating__rated类的li元素) $ratedCount = count($ratingList->find('.rating__rated')); echo "已评星级数量: " . $ratedCount . "/5\n"; } else { echo "该模块无星级评分\n"; } echo "---\n"; }
代码细节解释
$dom->find('.reviews-summary'):通过类名定位所有reviews-summary容器,返回一个元素数组,咱们用foreach逐个处理。$summary->find('.reviews-title', 0):在当前summary容器内找到第一个reviews-title元素,用plaintext获取它的纯文本内容。$ratingList = $summary->find('.rating', 0):先检查当前模块是否存在rating列表,避免因不存在元素导致报错;存在的话再统计其中带rating__rated类的li数量,就是已点亮的星级数。
运行结果
执行上面的代码后,你会得到这样的输出:
评分标题: C 已评星级数量: 3/5 --- 评分标题: C... 该模块无星级评分 ---
内容的提问来源于stack exchange,提问作者Paras Prajapati
相关产品推荐
相关产品推荐

