使用正则表达式可以解析div元素吗?

时间:2019-05-02 21:52:55

标签: php regex web-scraping web-crawler

我正在尝试从具有动态ID的div中解析一些代码,例如:  (其中xxxx代表随机数)。

是否可以通过使用正则表达式来匹配所有可能的id(例如1111后,1213后等)来刮除给定div的元素。

这是我的代码:

dd`

    $target_html = $list_array[$i]->href;
    $ftp_html = file_get_html($target_html);

    $ftp_list = $ftp_html->find('div.main', 0);
    $ftp_array = $ftp_list->find('div#post-4885 a[id="player"]');
    for($j = 0; $j < sizeof($ftp_array); $j++){
      print_r($ftp_array[$j]->rel.'<br>');
    }
    echo '<hr>';

服务器上的HTML示例:

<div class="main>
<div id="post-xxxx:>
   elements...

  </div></div>`

1 个答案:

答案 0 :(得分:1)

当然可以刮除 TAG (仅)。

你在这里
(帖子ID在组2中,整个标签在组0中)

(?si)<div(?=(?:[^>"']|"[^"]*"|'[^']*')*?\sid\s*=\s*(?:(['"])\s*(post-\d+).*?\1))\s+(?:".*?"|'.*?'|[^>]*?)+>

https://regex101.com/r/VcWo2D/1

可读

 (?si)

 <div
 (?=
      (?: [^>"'] | " [^"]* " | ' [^']* ' )*?
      \s id \s* = \s* 
      (?:
           ( ['"] )                      # (1)
           \s* 
           ( post- \d+ )                 # (2)
           .*? 
           \1 
      )
 )
 \s+ 
 (?: " .*? " | ' .*? ' | [^>]*? )+
 >