日期:2014-05-17  浏览次数:20464 次

preg_match取值问题
$body=<img src="/me/cjpzd/content/image/20120515/20120515045346_42838.jpg" /> <img src="/me/cjpzd/content/image/20120515/20120515031343_95240.gif" />;

preg_match('/<[img|IMG].+src=[\'|\"]?(.+\.(jpg|gif|bmp|png))[\'|\"]?.+>/i', $body, $match);
这样取得的是最后一个src,不是第一个

$body=<img src="/me/cjpzd/content/image/20120515/20120515045346_42838.jpg" /><br /><img src="/me/cjpzd/content/image/20120515/20120515031343_95240.gif" />;
图片间加<br />后就没问题,怎么回事


------解决方案--------------------
问题在于.+,你用了很多贪婪匹配,自然会匹配到最后面的img,可以? U去修饰
------解决方案--------------------
preg_match('/<[img|IMG].+?src=[\'|\"]?([^"]+\.(jpg|gif|bmp|png))[\'|\"]?.+?>/i', $body, $match);

你的范围没限死。.+ 范围太广了。又没有限制贪婪匹配。