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