div中的preg_match模式

时间:2013-06-22 16:46:06

标签: php regex

<div class="large-notice"><h2>yyyy</h2><p>ABCD</p><form>zzzz</form></div>

使用此preg_match,我可以提取<div>....</div>之间的所有文字:

preg_match('#<div class="large-notice">(.*?)</div>#s', $one, $n);

但我只想要<p></p>之间的文字,即ABCD

2 个答案:

答案 0 :(得分:2)

有很多方法可以做到这一点,很大程度上取决于我们是只处理这一个特定的标记还是整个文档有一些波动。

无论如何,以下任何一种都应该有效:

preg_match('#<div class="large-notice"><h2>.*?</h2><p>(.*?)</p><form>.*?</form></div>#s', $one, $n);

preg_match('#<p>(.*?)</p>#s', $one, $n);

答案 1 :(得分:0)

我认为前面的答案更好,但你也可以使用strpos找到你正在寻找的字符串的起始位置和结束位置并将其缩小... 欢呼声