用正则提取图片

[ 2010-04-11 23:05:47 | 作者: admin ]
字号: | |
用这个正则也提取不出来

请教一下大虾你们是怎么做的
 
你的<没转义.
我认为如下
/\<img.*?src\=\"(.*?)\"[^>]*>/i

首先.你不确定src与img之间有些什么东西.或许是个空格.或者还有border等等.
所以要用.*?来设定所有字符.
 
 
 
 
复制PHP内容到剪贴板
PHP代码:
<?php
$image_html = '<P align=center><IMG alt="abc" src="[url=http://img1.qq.com/ent/pics/7274/7274403.jpg]http://img1.qq.com/ent/pics/7274/7274403.jpg[/url]" border=1>';
preg_match_all('/<IMG alt="(.+?)" src="(.+?)"/i', $image_html, $arr);
print_r($arr);
?>

/*************************************************************************************/
                
         //函数名:get_image_fromcontent( &$content)
                //作用:在含有HTML标签并带有图片的内容中过滤出图片地址(去除图片样式只保留图片地址)
                //参数:$content(待过滤的字符串)
                //返回值:字符串
                //备注:数据库中查询带图片的内容最有效的查询语句-- ***(查询项) REGEXP '<\s*img[^>]+src\s*=\s*[^>]+>'
                private function get_image_fromcontent( &$content)
                {
                //获取内容中图片
                //取得第一个匹配的图片路径
                $retimg="";
                $matches=null;
     //标准的src="xxxxx"或者src='xxxxx'写法
                preg_match("/<\s*img\s+[^>]*?src\s*=\s*(\'|\")(.*?)\\1[^>]*?\/?\s*>/i", $content, $matches);
                if(isset($matches[2])){
                     $retimg=$matches[2];
                     unset($matches);
                     return $retimg;
                }
                //非标准的src=xxxxx 写法
                unset($matches);
                $matches=null;
                preg_match("/<\s*img\s+[^>]*?src\s*=\s*(.*?)[\s\"\'>][^>]*?\/?\s*>/i", $content, $matches);
                if(isset($matches[1])){
                     $retimg=$matches[1];
                }
                unset($matches);
                return $retimg;
                }
这个取图片的功能不错!代码加亮没搞好,将就点看,
评论Feed 评论Feed: http://blog.xg98.com/feed.asp?q=comment&id=1378

这篇日志没有评论。

此日志不可发表评论。