繁体   English   中英

如何使用正则表达式匹配多个段落?

[英]How to use regex to match multiple paragraphs?

我想处理网页中的 html 并提取符合我的条件的段落。 正则表达式的风格是 PHP。

这是示例网页 HTML:

<div class="special">
    <p>Some interesting text I would like to extract</p>
    <p>More interesting text I would like to extract</p>
    <p>Even more interesting text I would like to extract</p>
</div>

正则表达式在<div class="special"></div>标记之间查找,并将所有内容放入捕获组或变量中以供下一步参考。 下一步是我遇到的问题。 我一生都无法编写一个正则表达式来捕获<p></p>之间的每一段文本。

我试过/<p>(.+?)<\\/p>/s返回:

<p>Some interesting text I would like to extract</p>
<p>More interesting text I would like to extract</p>
<p>Even more interesting text I would like to extract</p>

我希望每个段落都作为数组中的项目单独返回。 非贪婪? 似乎不起作用。 有什么建议?

您必须为 p 标签转义斜杠。

所以这将是

/<p>(.+?)<\/p>/s

那么蠢! 正则表达式完美运行。 所有的正则表达式都能完美地工作。 问题在于输入。 我正在处理的输入 HTML 文件具有以下结构,这使得正则表达式不起作用。

<p>Some interesting text I would like to extract
<p>More interesting text I would like to extract
<p>Even more interesting text I would like to extract</p></p></p>

我使用 var_dump(htmlfile.html) 查看我得到的 HTML 页面,但我的浏览器处理了它,所以我没有得到原始数据。 我能够通过使用以下方法获取原始数据并找到我的错误:

include 'filename.php'; 
file_put_contents('filename.php', $data);

现在我知道不要相信我的浏览器会再次返回原始数据!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM