PHP-PHP正则表达式匹配a链接奇怪问题
/<a[^>]*href=["']?([^"'>]+)["']?[^>]*>(.*)</a>/Uism
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
/<a[^>]*href=["']?([^"'>]+)["']?[^>]*>(.*)</a>/Uism
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
推荐使用 Ganon 或 Simple Html Dom Parser 来处理PHP对Html的相关Dom操作。方便又准确。而不是使用正则。
Ganon
关键可能是你这里用了U修饰符, 表示非贪婪. 在楼主的正则上加一点分组看的更清楚:
测试例子:
正则:
最终打印结果为:
也就是说
([^"'>]+)
, 即是([^"'>]+?)
, 分组仅匹配了h
经我本地环境测试,使用你第一个正则也能正常匹配。
$str = <<<ETO
<a href='http://www.baidu.com/d/index.php'>sdfsdf/sdfkdf j </a>
ETO;
$parm = <<<ETO
/<a[^>]*href=["']?([^"'>]+)["']?[^>]*>(.*)</a>/
ETO;
echo preg_match($parm, $str,$match);
var_dump($match);
输出:
1
array (size=3)
0 => string '<a href='http://www.baidu.com/d/index.php'>sdfsdf/sdfkdf j </a>' (length=63)
1 => string 'http://www.baidu.com/d/index.php' (length=32)
2 => string 'sdfsdf/sdfkdf j ' (length=16)
我的本地环境:php5.4.12;