php - 是否可以使用正则表达式解析 div 元素?
问题描述
我正在尝试从具有动态 id 的 div 中解析一些代码,例如:(其中 xxxx 代表随机数)。
有什么方法可以通过使用正则表达式匹配所有可能的 id 来抓取给定的 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>`
解决方案
当然可以刮掉标签(仅)。
给你
(帖子 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+
(?: " .*? " | ' .*? ' | [^>]*? )+
>
推荐阅读
- database - 如何解决在 Delphi Firedac 中添加 ADT 字段的错误?
- excel - EXCEL VBA查找最大日期并过滤最大日期前x天
- typescript - Angular 6 测试 httpclient post 方法
- asp.net-mvc - 在 Asp.net mvc 中查看模型
- angular - PrimeNG 表未重置
- java - 通过 maven 的 OpenJDK 11 + OpenJFX 11 无法在 Eclipse 2018-09 + Java 11 补丁中运行
- c++ - 为什么在 x64 构建配置上内存地址增加 54?
- java - 当我按下一个键时 onKeyUp 没有启动
- eclipse - 我正在尝试编写一个 prog 来使用 jsch api 从 java 中执行 unix 中的命令
- ruby-on-rails - 如何添加对模型的引用以使用不同的名称两次?