PHP从字符串中获取图像的所有URL

时间:2012-08-03 05:54:35

标签: php regex string image url

我需要PHP的函数或Regex字符串,我可以像这样传递一个字符串:

  

Lorem ipsum dolor sit amet,http://www.gettyimages.com/images/marketing/frontdoorStill/PanoramicImagesRM/FD_image.jpg consectetur adipiscing elit。 Nullam sed diam lectus,rutrum orci。 Suspendisse的潜力。 Nulla facilisi。 Suspendisse的潜力。 Ut http://www.handsonuniverse.org/get_images/images/20090802.ngc6992.HOS.jpg ullamcorper mauris sit amet elit tristique sit amet laoreet nunc condimentum。 Lorem ipsum dolor坐下来,精致的adipistur elit。 Aliquam euismod arcu non odio http://www.prelovac.com/vladimir/wp-content/uploads/2008/03/example.jpg aliquam vestibulum。 seve eleifend tellus id augue luctus ac ultrices leo semper。

我会得到回报得到:

  

http://www.gettyimages.com/images/marketing/frontdoorStill/PanoramicImagesRM/FD_image.jpg    http://www.handsonuniverse.org/get_images/images/20090802.ngc6992.HOS.jpg    http://www.prelovac.com/vladimir/wp-content/uploads/2008/03/example.jpg

在一个数组中。我需要它来抓取基于天气的URL,或者它们包含常规的图像扩展名,例如* .jpg,* .png,* .bmp等。任何人都知道一个存在,所以我可以避免重新发明轮子?谢谢!

3 个答案:

答案 0 :(得分:4)

好吧,下面的内容适用于您的示例:

preg_match_all('/(https?:\/\/\S+\.(?:jpg|png|gif))\s+/', $content, $matches);

添加您要捕获的任何其他扩展程序。

请注意,上述内容不一定非常健壮(例如,它与www.blah.com/image.jpg不匹配)。也不会匹配未在扩展名中结束的网址,即使它们是图片(即http://domain.com/blah.jpg?loadsmall=true或其他内容)。有一些方法可以使它更加智能,但它实际上取决于您期望的输入类型,因为这会推动您的解析需要多么复杂。

答案 1 :(得分:2)

如果您不想使用正则表达式执行此操作。而是解析HTML。

<?php
$html='YOUR_STRING';
$dom = new domDocument; 
$dom->loadHTML($html); 
$dom->preserveWhiteSpace = false;
$images = $dom->getElementsByTagName('img');

foreach ($images as $image) 
   {   
     echo $image->getAttribute('src'); 
   }

?>

答案 2 :(得分:1)

这是正则表达式: /(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/g

演示:http://regexr.com?31ni5

积分可用于Google的随机搜索结果。