【问题标题】:how to put both nodes in same cycle?如何将两个节点放在同一个循环中?
【发布时间】:2016-11-21 00:48:23
【问题描述】:

这是我用的:

libxml_use_internal_errors(true);
$dom = new DomDocument;
$dom->loadHTMLFile("https://www.gismeteo.ru/city/weekly/4230/");
$xpath = new DomXPath($dom);
$weekday= $xpath->query('//*[@id="weather-weekly"]//div[@class="weekday"]');
$date= $xpath->query('//*[@id="weather-weekly"]//div[@class="s_date"]');

foreach ($weekday as $node4){
foreach ($date as $node3){
echo $node4->nodeValue,$node3->nodeValue,"<br>";}}

$node4-&gt;nodeValue 打印出星期几 sun, mon, tue...$node3-&gt;nodeValue 打印出月份中的哪一天,我如何让它像这样在同一列中打印所有内容 sat 23.07, sun 24.08...?谢谢。

【问题讨论】:

    标签: php foreach nodes domxpath


    【解决方案1】:
    $xpath = new DomXPath($dom);
    $days = $xpath->query('//*[@id="weather-weekly"]//div[@class="wbshort"]');
    foreach ($days as $day) {
       // find weekday and date under day
       $weekday= $xpath->query('.//div[@class="weekday"]', $day);
       $date= $xpath->query('.//div[@class="s_date"]', $day);
       echo $weekday->item(0)->nodeValue . " " . $date->item(0)->nodeValue;
    }
    

    【讨论】:

    • 我收到了这个错误Catchable fatal error: Argument 2 passed to DOMXPath::query() must be an instance of DOMNode
    • 抱歉,打错了 - 我在前一天丢失了$
    • 好的,但是如何让它打印所有列表呢?它只打印第一个项目,我尝试将foreach ($days as $i =&gt; $day) 和项目设置为item($i) 没有帮助。
    • @MakeMeWise 看了页面结构,重写了代码
    • 是的!非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    • 2021-03-16
    • 1970-01-01
    • 2018-05-22
    相关资源
    最近更新 更多