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

php 正则匹配 url img
我现在要匹配一个url地址,如:<img alt="图片说明" src="http://i3.sinaimg.cn/ent/2013/0604/U8551P28DT20130604154106.jpg" title="title" />。我只想要src的url地址,还要匹配<img .... />,有的是这种形式<img alt="图片说明" src=http://i3.sinaimg.cn/ent/2013/0604/U8551P28DT20130604154106.jpg title="title" />src后面没有““”双引号,有的是单引号,而且alt和title有的<img />标记中是没有的。请问各位这个正则怎么写呢?
PHP URL 正则 图片 url

------解决方案--------------------
/((http
------解决方案--------------------
https):\/\/)+(\w+\.)+(\w+)[\w\/\.\-]*(jpg
------解决方案--------------------
gif
------解决方案--------------------
png)/
------解决方案--------------------

<?php

$str =<<<EOF


<img alt="图片说明" src="http://i3.sinaimg.cn/ent/2013/0604/U8551P28DT20130604154106.jpg" title="title" />

src后面没有““”双引号
<img alt="图片说明" src=http://i3.sinaimg.cn/ent/2013/0604/U8551P28DT20130604154106.jpg title="title" />

单引号
<img alt="图片说明" src='http://i3.sinaimg.cn/ent/2013/0604/U8551P28DT20130604154106.jpg' title="title" />

没有alt
<img src='http://i3.sinaimg.cn/ent/2013/0604/U8551P28DT20130604154106.jpg' title="title" />

没有title
<img alt="图片说明" src='http://i3.sinaimg.cn/ent/2013/0604/U8551P28DT20130604154106.jpg' title="title" />

都没有
<img src='http://i3.sinaimg.cn/ent/2013/0604/U8551P28DT20130604154106.jpg' />

EOF;

$reg = '/<img[^>]*src=[\'"]?([^\'"\s]+)[\'"]?[^>]*>/im';
$matches = array();
preg_match_all($reg, $str, $matches);
print_r($matches);

------解决方案--------------------
引用:

<?php

$str =<<<EOF


<img alt="图片说明" src="http://i3.sinaimg.cn/ent/2013/0604/U8551P28DT20130604154106.jpg" title="title" />

src后面没有““”双引号
<img alt="图片说明" src=http://i3.sinaimg.cn/ent/2013/0604/U8551P28DT20130604154106.jpg title="title" />

单引号
<img alt="图片说明" src='http://i3.sinaimg.cn/ent/2013/0604/U8551P28DT20130604154106.jpg' title="title" />

没有alt
<img src='http://i3.sinaimg.cn/ent/2013/0604/U8551P28DT20130604154106.jpg' title="title" />

没有title
<img alt="图片说明" src='http://i3.sinaimg.cn/ent/2013/0604/U8551P28DT20130604154106.jpg' title="title" />

都没有
<img src='http://i3.sinaimg.cn/ent/2013/0604/U8551P28DT20130604154106.jpg' />

EOF;

$reg = '/<img[^>]*src=[\'"]?([^\'"\s]+)[\'"]?[^>]*>/im';
$matches = array();
preg_match_all($reg, $str, $matches);