使用正则表达式捕获html标记内的内容

med*_*iev 3 html php regex

首先,我知道这是一个不好的做法,我什至回答了很多问题,但为澄清起见,我被迫使用正则表达式,因为此应用程序将正则表达式存储在数据库中,并且仅以此方式运行。我绝对不能更改功能

现在我们已经解决了这个问题..因为我一直使用DOM方法,所以我不习惯使用正则表达式。

我想捕获介绍性内容部门内部的所有内容,直到第一个 end div标签。我不在乎正则表达式是否会在嵌套div上失败。我也需要捕获空格(换行符)字符。

<div class="intro-content">
<p>blah</p>
<br/>
<strong>test</strong>
</div>
Run Code Online (Sandbox Code Playgroud)

到目前为止的正则表达式:

<div\s*class="intro-content">(.*)</div>
Run Code Online (Sandbox Code Playgroud)

这显然不起作用,因为该.字符将与空格字符不匹配。

我确实意识到有成百上千的问题,但是我访问的问题只有相对简单的答案(不包括DOM建议答案),其中a (.*)不足以解决问题,因为它不考虑换行符,并且某些正则表达式过于贪婪。

我不是在寻找一种完美,干净的解决方案来解决所有可能的问题(甚至是可能的)-我只想找到一种适用于该解决方案的快速解决方案,这样我就可以继续进行并处理不是如此可怕的编码。

Phi*_*oss 5

听起来您需要启用“点全部”(s)标志。这将使。匹配所有字符,包括换行符。例如:

preg_match('/<div\s*class="intro-content">(.*)<\/div>/s', $html);
Run Code Online (Sandbox Code Playgroud)