日期:2014-05-16  浏览次数:20311 次

提取HTML代码中的图片URL地址,<img标签内属性排列不规则情况,正则怎么写
如题,提取HTML代码中的图片URL地址
<script language="javascript">
var picFiles="";
function getimgsrc(htmlstr){
  picFiles="";
var re=/<(?:img|embed|script)(?:\s+\w+\s*=\s*[^\s>]+)*\s+src(?:\s)*=(?:\s)*([^\s>]*)/gim  
while(re.exec(htmlstr) != null) {
  picFiles=picFiles+((RegExp.$1).replace(/["']/g,""))+"|";  
  }  
}

function selectPics()
{
var htmlStr="<P align=center><FONT size=3><IMG src='/include/eWebEditor/UploadFile/200941092128708.jpg' width=636 border=0>ddd<IMG style='WIDTH: 294px; HEIGHT: 245px' src=/include/eWebEditor/UploadFile/20094109234712.jpg' width=441 height=341 border=0></P>";
getimgsrc(htmlStr);
alert(picFiles);
if(picFiles=="")
{
alert("对不起,您的详细内容中没有图片可供选择!");
return;
}
}
</script>


问题出现在,第一个img的URL取得到,但是第2个IMG就取不到了,<img中src前多了个:style='WIDTH: 294px; HEIGHT: 245px'请问该如何取消这些src前的所有字符?请教高手,因为有可能还有其他如width=441 height=341 也排在前边,有可能就无法获取了

------解决方案--------------------
为什么要用正规? 用document.getElementsByTagName('img') 最简便。
------解决方案--------------------
按你给的字符可以
HTML code
<script language="javascript"> 
function  getimgsrc(htmlstr){
    var reg=/<img.+?src=('|")?([^'"]+)('|")?(?:\s+|>)/gim;
    var arr = [];
    while(tem=reg.exec(htmlstr)){
        arr.push(tem[2]);
    }
    return arr;
}
var htmlStr=" <P align=center> <FONT size=3> <IMG src='/include/eWebEditor/UploadFile/200941092128708.jpg' width=636 border=0>ddd <IMG style='WIDTH: 294px; HEIGHT: 245px' src=/include/eWebEditor/UploadFile/20094109234712.jpg' width=441 height=341 border=0> </P>"; 
var imgs=getimgsrc(htmlStr); 
alert(imgs.join('\n'));
</script>