dtt5830659 2017-04-09 10:08
浏览 69
已采纳

PHP DOM解析多个页面使用while循环多次加载单页语句

I m trying to parse a post related statement from a forum site using PHP dom parser. It works when we insert individual url's of the page, but when we try to apply a while loop logic it kinda prints only one page multiple times..

my code as goes::

<?php
    set_time_limit(3600);
      $i = 1;
      $e = 839304-$i;
     while(true){
    require_once('dom/simple_html_dom.php'); 
$html =file_get_html('http://www.usmleforum.com/files/forum/2017/1/'.$e.'.php');
    foreach ($html->find("tr") as $row) {
    $element = $row->find('td.Text2',0);
    if ($element == null) { continue; }
    $textNode = array_filter($element->nodes, function ($n) {
    return $n->nodetype == 3;        //Text node type, like in jQuery     
});
    if (!empty($textNode)) {
    $text = current($textNode);
    echo $text."<br>"; 
}
}
    $i++;
}
?>

as the result indicates, it only prints the statement from page 839303, but it prints it multiple times and still loads on.. so its clear that this code is skipping the $i++ line somehow and runs again...

Any help is appreciated...

  • 写回答

1条回答 默认 最新

  • duannaxin9975 2017-04-09 10:13
    关注

    Insert $e inside while loop will fix the problem. but it is an infine loop. so try to give an exit condition for while loop like: while($i < 100) or something else.

     <?php
        set_time_limit(3600);
          $i = 0;
    
         while($i < 10){
         $e = 839303 + $i;
        require_once('dom/simple_html_dom.php'); 
    $html =file_get_html('http://www.usmleforum.com/files/forum/2017/1/'.$e.'.php');
        foreach ($html->find("tr") as $row) {
        $element = $row->find('td.Text2',0);
        if ($element == null) { continue; }
        $textNode = array_filter($element->nodes, function ($n) {
        return $n->nodetype == 3;        //Text node type, like in jQuery     
    });
        if (!empty($textNode)) {
        $text = current($textNode);
        echo $text."<br>"; 
    }
    }
        $i++;
    }
    ?>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办