代码之家  ›  专栏  ›  技术社区  ›  James

如何使用正则表达式提取HTML图像源?

  •  11
  • James  · 技术社区  · 16 年前

    我需要从HTML文档中的所有图像标签中提取src元素。

    http://www.google.com/intl/en_ALL/images/logo.gif

    <img\s+src=""(http://.*?)
    

    <img height="1px" src="spacer.gif">
    

    4 回复  |  直到 16 年前
        1
  •  26
  •   Anirvan    16 年前

    以下正则表达式片段应该可以工作。

    <img[^>]+src="([^">]+)"
    

    它查找以以下开头的文本 <img ,后跟一个或多个非 > src=" 。然后,它抓住了这一点和下一点之间的所有东西 " > .

    但如果可能的话,请使用真正的HTML解析器。它更坚固,能更好地处理边缘情况。

        2
  •  10
  •   Community Mohan Dere    8 年前

    你不想那样做。正确解析HTML是一个非常复杂的问题,正则表达式不是一个很好的工具。

    Can you provide some examples of why it is hard to parse XML and HTML with a regex?

    How do I programatically inspect a HTML document

        3
  •  5
  •   ryanulit    16 年前

    你可以用Javascript很容易地做到这一点。示例如下:

    var images = document.getElementsByTagName("img");
    
    for (i=0; i < images.length; i++)
    {
       // get image src
       var currImage = images[i].src;
    
       // do link creation here
    } 
    
        4
  •  2
  •   ashrafweb    11 年前

    这对我很有效

    $regexp = '<img[^>]+src=(?:\"|\')\K(.[^">]+?)(?=\"|\')';
    
    if(preg_match_all("/$regexp/", $content, $matches, PREG_SET_ORDER)) {
    
        if( !empty($matches) ) {
    
            for ($i=0; $i <= count($matches); $i++)
    
            {
                $img_src = $matches[$i][0];
    
                echo $img_src;
    
            }
    
        }
    
    }
    
    推荐文章