使用DOMDocument获取多个元素


Get multiple elements with DOMDocument

我需要解析这样的HTML:

<div class="item"><div class="title">title 1</div><div class="date">day 1</div></div>
<div class="item"><div class="title">title 2</div><div class="date">day 2</div></div>
<div class="item"><div class="title">title 3</div><div class="date">day 3</div></div>

实际上我是这样做的:

$title = $xpath->query('//div[@class="title"]//text()');
foreach ($title as $title)
{
  $title = trim($title->nodeValue);
}
$date = $xpath->query('//div[@class="date"]//text()');
foreach ($date as $date)
{
  $date = trim($date->nodeValue);
}

但是我只取一个项目,所以我寻找合适的方法在同一时间内获得所有项目

您可能想要遍历item元素,然后找到它们各自的titledate文本。

$items = $xpath->query('//div[@class="item"]');
foreach ($items as $item) {
    $title = $xpath->evaluate('string(div[@class="title"])', $item);
    $date  = $xpath->evaluate('string(div[@class="date"])', $item);
    echo "$title $date'n";
}

>

我不太明白你的问题。循环工作如预期,你可以只是累积所有的标题和日期在一个数组中。虽然我不会重复使用相同的变量名。

$titles = $xpath->query('//div[@class="title"]//text()');
foreach ($titles as $title)
{
    $all_titles[] = trim($title->nodeValue);
}
$dates = $xpath->query('//div[@class="date"]//text()');
foreach ($dates as $date)
{
    $all_dates[] = trim($date->nodeValue);
}