所以我一直試圖使用一些正則表達式從<a href='#' >HTML a tag</a>
中提取信息,以獲取可能標記的三個獨立模式。正則表達式preg_match_all用於檢索名稱,ID和hrefs的HTML標記
<a id="Anchor_One" name="Anchor_One"> Anchor Details </a>
<a href="#Anchor_Two" name="Anchor_Two" > Anchor Two Details </a>
<a name="Anchor_Three" > Anchor Three Details </a>
到目前爲止,我有一些正則表達式來提取所有從給定的HTML標籤/(\\w+)\s*=\\s*("[^"]*"|\'[^\']*\'|[^"\'\\s>]*)/
的屬性。我也有一些正則表達式來匹配href
屬性激活/<a\s[^>]*href=(\"??)([^\" >]*?)\\1[^>]*>(.*)<\/a>/siU
的鏈接。但我似乎無法創建一個模式來匹配鏈接標記可能具有的其他組合。
<a id="Anchor_One" name="Anchor_One"> Anchor Details </a>
<a name="Anchor_Three" > Anchor Three Details </a>
鏈接沒有href
屬性集,沒有拿起我目前的模式,因此可以檢索並非所有的錨。
$regexp = '/<a\s[^>]*href=(\"??)([^\" >]*?)\\1[^>]*>(.*)<\/a>/siU';
//parse the page with the provided regular expression
if(preg_match_all($regexp, $sessionBlock, $htmlMatches))
{
}
的可能重複[你如何解析和PHP程序的HTML/XML?](http://stackoverflow.com/questions/3577641/how-do-you-parse-and- process-html-xml-in-php) – hakre
**不要使用正則表達式來解析HTML。使用合適的HTML解析模塊**您無法可靠地使用正則表達式解析HTML,並且您將面臨悲傷和挫折。只要HTML從你的期望改變,你的代碼就會被破壞。有關如何使用已經編寫,測試和調試的PHP模塊正確解析HTML的示例,請參閱http://htmlparsing.com/php。 –