You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PHP Simple HTML DOM Parser解析电影DOM仅获最后一个类型的问题

问题:PHP Simple HTML DOM Parser 仅获取到最后一个电影类型的原因及修复方案

嘿,我一眼就瞅出问题所在啦!你现在只能拿到最后一个电影类型,是因为循环里的赋值逻辑错了——每次迭代都在覆盖$item['genres']的值,而不是把所有类型累加起来。

看你代码里的这段循环:

foreach($data->find('a.movie-genre-item') as $genre) {
    $item['genres'] = $genre->plaintext . ', ';
}

每遍历到一个类型,你都直接把$item['genres']重新赋值为当前类型的文本加逗号,之前的类型内容全被覆盖了,循环结束后自然只剩下最后一个类型。

修复方案

有两种常用的修复方式,选哪种都可以:

方式1:字符串累加(简单直接)

先在循环前把$item['genres']初始化为空字符串,然后用.运算符追加每个类型的内容,最后再去掉末尾多余的逗号和空格:

// 初始化空字符串
$item['genres'] = '';
foreach($data->find('a.movie-genre-item') as $genre) {
    // 用.=追加内容,而不是直接赋值
    $item['genres'] .= $genre->plaintext . ', ';
}
// 移除末尾多余的逗号和空格
$item['genres'] = rtrim($item['genres'], ', ');

方式2:数组收集再转字符串(更灵活)

先把所有类型存入数组,最后用implode()把数组转成逗号分隔的字符串,这种方式后续如果要对类型做筛选、去重等操作会更方便:

// 初始化空数组
$item['genres'] = [];
foreach($data->find('a.movie-genre-item') as $genre) {
    $item['genres'][] = $genre->plaintext;
}
// 数组转成逗号分隔的字符串
$item['genres'] = implode(', ', $item['genres']);

把上面的代码替换你原来的循环部分,就能成功获取到所有电影类型啦!

内容的提问来源于stack exchange,提问作者DaftPlug

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:56:59