正規表現を使用して HTML リンクから href 値を抽出する
堅牢な HTML 解析には通常、専用の HTML パーサーが推奨されますが、より単純なシナリオでは正規表現のアプローチを使用できます。 このソリューションは、一重引用符と二重引用符の両方を処理して href
値を抽出します。
<code><a\s+(?:[^>]*?\s+)?href=("|')(.+?)</code>
説明:
<as
: 開始 <a>
タグとその後にオプションの空白が続くものと一致します。(?:[^>]*?s )?
: オプションで、他の属性と href
の前の空白と一致します。 ?:
により、これは非キャプチャ グループになります。href=("|')
: href
属性の後に一重引用符または二重引用符が続くものと一致します。 引用はグループ 1 にキャプチャされます。(. ?)
: href
値自体をキャプチャします (グループ 2)。1
: 終了引用符と一致します (グループ 1 でキャプチャされた開始引用符と同じです)。重要な考慮事項:
この正規表現は完全な HTML パーサーではありません。不正な形式または複雑な HTML では失敗します。 前処理された単純化された HTML スニペットに最適です。 たとえば、次のように抽出された href
属性のリストで使用します: href="mylink.com"
特定のリンク タイプのフィルタリング:
疑問符 (?
) と等号 (=
) の両方を含むリンクをフィルターするには、次の洗練された正規表現を使用します。
<code>href=(.*?)\?(.*?)=(.*?)</code>
これにより、指定された特性を持つリンクのみが選択されるようになります。 複雑な HTML 構造では、信頼性の高い結果を得るために専用の HTML パーサーが必要であることに注意してください。
以上が正規表現を使用して HTML リンクから href 値を抽出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。