php正则匹配后下一个引号问题

$html = <<<EOF
<a href="a.php?u=ABjhpIVC;b=5" onmousedown="return rwt(AFQjCNH3RnE94GMEJkoxp0Iy1fSbpjbbwQ)">title</a>
EOF;

$isMatched = preg_match('/<a(.*?)href="(.*?)">(.*?)<\/a>/', $html, $matches);

我用这个代码最后匹配出来的是从<a href="

">title中间的内容
最后输出的结果
a.php?u=ABjhpIVC;b=5" onmousedown="return rwt(AFQjCNH3RnE94GMEJkoxp0Iy1fSbpjbbwQ)
我想要获取第一个双引号到第二个引号中间的内容,也就是a 标签href=的内容
并不需要获取从第一个引号到最后一个双引号中间的内容,请问大家我这段代码怎么修改才能匹配出来?

阅读 3.3k
3 个回答

那你就要用贪婪匹配咯~
/<a(.*?)href="(.*)">(.*?)<\/a>/
你用.*?后面跟"他只要匹配到下一字符是"就停止了

是用禁止贪婪匹配U
个人经验 你写正则的时候都加上Uis

'/<a.*href="(.*)".*>(.*)</a>/iU',href后边还有属性呢,不写上匹配不到的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题