我需要解析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);
}
但是这个我只拿了一个项目,所以我正在寻找合适的方法让所有项目都在同一时间。
答案 0 :(得分:3)
您可能想要遍历item
元素,然后查找各自的title
和date
文字。
$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";
}
答案 1 :(得分:1)
我真的不明白你的问题。循环按预期工作,例如,您可以在数组中累积所有标题和日期。虽然我不会再次重复使用相同的变量名称。
$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);
}
codepad进行测试。