【发布时间】:2014-09-23 18:15:17
【问题描述】:
在测试环境中,$html 是 20 到 30 行或更多的 HTML 是由对另一个页面/站点的 CURL(抓取)查询创建的,但为了简单起见,我将其简化为这个简单的示例:
我需要回显 ID 为“keepthis”的 DIV 及其所有 HTML 结构完整的内容,但删除它之前和之后的所有内容。 ID 为“deletethis”的 DIV 将始终具有该 ID。我查看了涉及 substr/explode/trim 的多个帖子,但我找不到或无法使用从
的位置 0 开始删除 $html 中的所有内容的方法那个 div(deletethis) 不在代码中的固定字符数处,我可以在 DIV(keepthis) 工作之前删除所有内容,而不是另一边。任何帮助将不胜感激。
$html = '<h1>hello world</h1><div id="keepthis"> Sample content</div><div id="deletethis">a bunch of other dynamic html here</div>';
$x = substr($html, strpos($html, '<div id="keepthis">')); //cleans up the BEFORE code
echo $x;
【问题讨论】:
-
为什么不将代码解析成 DOM 文档呢?到目前为止,您尝试过哪些正则表达式模式?他们是怎么失败的?
-
使用 DOMDocument 和 DOMXpath 你当然可以做到这一点...hint
-
@DMS 你的意思是regex101.com/r/jM2lE0/2 ?
-
@AvinashRaj Regex 不应用于解析 HTML...
-
@War10ck 对于较短的 html 代码来说这不会是一个大问题。