Можно ли проанализировать элементы div с помощью регулярных выражений? - PullRequest
0 голосов
/ 03 мая 2019

Я пытаюсь проанализировать некоторый код из div с динамическим идентификатором, например: (где xxxx обозначает случайные числа).

Есть ли способ очистить элементы данного div, используя регулярное выражение длясопоставить все возможные идентификаторы, например, post-1111, post-1213 и т. д.

Вот мой код:

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 Ответ

1 голос
/ 03 мая 2019

Конечно, можно поцарапать TAG (только).

Вот, пожалуйста,
(идентификаторы записей в группе 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+ 
 (?: " .*? " | ' .*? ' | [^>]*? )+
 >
...