1

<a href='#' >HTML a tag</a>そのため、可能なタグの 3 つの個別のスキーマについて、いくつかの正規表現を使用して から情報を抽出しようとしました。

<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また、リンクを属性 activeと一致させるための正規表現もあります/<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))
    {

    }
4

2 に答える 2

3

HTML の解析に正規表現を使用しないでください。

HTML は通常の構造化言語ではないため、正規表現で解析することは非常に難しく、完全に混乱します。

PHP で HTML を解析するためのこれらの代替手段を見てください。

于 2013-08-20T22:31:41.273 に答える