PHP正則表達式如何從HTML中提取特定內容?

使用php正則表達式html中提取特定內容

本文介紹如何用PHP正則表達式從HTML代碼中提取特定內容,解決兩個問題:提取特定class屬性的div標簽內容,以及提取該div內所有a標簽href屬性值。

PHP正則表達式如何從HTML中提取特定內容?

問題一:提取class屬性為“box list channel max-border list-text-my”的div標簽內容

假設HTML代碼片段如下:

立即學習PHP免費學習筆記(深入)”;

<div class="box list channel max-border list-text-my"> <ul><li><a href="https://www.php.cn/link/b999a556e5f6186b8cba2dd848c22711" title="">[2022-12-13]新聞1</a></li>     <li><a href="https://www.php.cn/link/7c1373b8fec010dba9b2cf06e7b232a7" title="">[2022-12-13]新聞2</a></li>     <li><a href="https://www.php.cn/link/afe7064469e1509a007b92118aee4524" title="">[2022-12-13]新聞3</a></li> </ul></div>

可以使用以下PHP正則表達式提取該div標簽的所有內容:

/<div class="box list channel max-border list-text-my">([sS]*?)</div>/

該表達式匹配

標簽及其內容,([sS]*?)捕獲div標簽內的所有內容(包括換行符和空格)。?表示非貪婪匹配,確保只匹配最內層的div標簽。

問題二:提取上述div標簽內所有a標簽的href屬性值

針對同一HTML代碼片段,提取每個標簽的href屬性值,可以使用以下PHP正則表達式:

/<a href="https://www.php.cn/link/4a33edb840d8caeb24bbcb1b0ce1d8d7"]*)"/

該表達式匹配,并用https://www.php.cn/link/4a33edb840d8caeb24bbcb1b0ce1d8d7″]*)捕獲href屬性值。[^”]*匹配引號內的任意字符,直到遇到下一個引號。

通過這兩個正則表達式,可以高效地從HTML代碼中提取所需信息。 但需要注意的是,使用正則表達式解析HTML存在局限性,對于復雜的HTML結構,建議使用專門的HTML解析器,例如DOMDocument。

? 版權聲明
THE END
喜歡就支持一下吧
點贊14 分享