使用正则表达式从 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中文网其他相关文章!