May 18
完美的img tag正则表达式及preg_match_all使用
最近发现一个神奇的PHP的preg_match_all编写代码时的错误
代码如下
preg_match_all('/<img.*src=(.*)\\s*.*>/iU',$content,$src);
$content为一串html,其中包含img tag,目的是想取得这串html中所有img的路径,也就是src值,并放到$src中。
理论上,上面这个代码没有任何问题,但实际上,它并没有起作用,正则没有写对,不能匹配成功。
真的很奇怪,到现在我都没有明白,这个正则哪里写错了,呵呵,看着,还是感觉蛮正确的。
将下面的添加上引号“"”,就可以匹配
preg_match_all('/<img.*src="(.*)"\\s*.*>/iU',$content,$src);
但这样修改又有问题,用户可能输入的是单引号,如src='aaaa'
经某陈强人的修改,现在如下
preg_match_all("/<img.+src=('|\"|)?(.*)(\\1)([\s].*)?>/ismUe", $content, $src);
完美啊,虽然偶看不太懂,呵呵。
使用方法如下
preg_match_all("/<img.+src=('|\"|)?(.*)(\\1)([\s].*)?>/ismUe", $content, $src);
if(count($src[2])>0){
foreach($src[2] as $v){
$images[] = $v;
}
return $images;
}else{
return false;
}
run:
$images = Array
(
[0] => Array
(
[0] => <IMG src="upload/201005181142377384.gif">
[1] => <IMG src="upload/201005181142378027.gif">
)
[1] => Array
(
[0] => "
[1] => "
)
[2] => Array
(
[0] => upload/201005181142377384.gif
[1] => upload/201005181142378027.gif
)
[3] => Array
(
[0] => "
[1] => "
)
[4] => Array
(
[0] =>
[1] =>
)
)
如果有牛人可以再完善的,请踊跃发言,呵呵。
代码如下
preg_match_all('/<img.*src=(.*)\\s*.*>/iU',$content,$src);
$content为一串html,其中包含img tag,目的是想取得这串html中所有img的路径,也就是src值,并放到$src中。
理论上,上面这个代码没有任何问题,但实际上,它并没有起作用,正则没有写对,不能匹配成功。
真的很奇怪,到现在我都没有明白,这个正则哪里写错了,呵呵,看着,还是感觉蛮正确的。
将下面的添加上引号“"”,就可以匹配
preg_match_all('/<img.*src="(.*)"\\s*.*>/iU',$content,$src);
但这样修改又有问题,用户可能输入的是单引号,如src='aaaa'
经某陈强人的修改,现在如下
preg_match_all("/<img.+src=('|\"|)?(.*)(\\1)([\s].*)?>/ismUe", $content, $src);
完美啊,虽然偶看不太懂,呵呵。
使用方法如下
preg_match_all("/<img.+src=('|\"|)?(.*)(\\1)([\s].*)?>/ismUe", $content, $src);
if(count($src[2])>0){
foreach($src[2] as $v){
$images[] = $v;
}
return $images;
}else{
return false;
}
run:
$images = Array
(
[0] => Array
(
[0] => <IMG src="upload/201005181142377384.gif">
[1] => <IMG src="upload/201005181142378027.gif">
)
[1] => Array
(
[0] => "
[1] => "
)
[2] => Array
(
[0] => upload/201005181142377384.gif
[1] => upload/201005181142378027.gif
)
[3] => Array
(
[0] => "
[1] => "
)
[4] => Array
(
[0] =>
[1] =>
)
)
如果有牛人可以再完善的,请踊跃发言,呵呵。
等等,下面还有精彩的文章哟:

最新评论及回复