首页 > 编程开发 > PHP应用 > PHP使用正则匹配Html代码中的所有A标签
2015
12-19

PHP使用正则匹配Html代码中的所有A标签

在改博客的时候遇到一个需求,需要处理网站上的所有外部链接,再自动加上ref="external nofollow"。那么就需要使用到正则匹配,但是又怕出现漏网之鱼,需要正则能匹配到所有的A标签,最终在国外网站上找到了比较完美的正则。

1.基本正则

  • <a href="开头
  • 使用双引号
  • 链接之后紧跟">
  • 中间为任意链接文字
  • 最后以</a>结尾。

注:

  1. i  匹配大小写
  2. s  模式中的圆点元字符(.)匹配所有的字符,包括换行符
  3. U  (PCRE_UNGREEDY) 本修正符反转了匹配数量的值使其不是默认的重复,而变成在后面跟上“?”才变得重复。这和 Perl 不兼容。也可以通过在模式之中设定 (?U) 修正符来启用此选项。

扩展,aherf之间有不确定多个空格:

2.标签中包含不确定属性

  • ahrefhref>之间有其他不确定的属性值,比如targetstyleref

3.允许不包含双引号

4.继续优化匹配规则

1)=之间存在空格

2)只匹配以http开头的链接

3)允许单引号

5.测试使用

链接:PHP: Parsing HTML to find Links

最后编辑:
作者:
百度ID:“度娘程序员”,博主。
捐 赠如果您觉得这篇文章有用处,请支持作者!鼓励作者写出更好更多的文章!

发表回复

你的邮箱地址不会被公开,垃圾评论将被删除。

有人回复时邮件通知我