簡體   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