2012-08-03 62 views
3

1需要PHP 1函数或正则表达式的字符串,可以通过一个字符串,像这样:PHP获取图像的所有URL的字符串从

Lorem存有胡萝卜,番茄http://www.gettyimages.com/images/marketing/frontdoorStill/PanoramicImagesRM/FD_image.jpg本科生科研。但继电器直径毕业临床妆。智能手机。法无。智能手机。为了http://www.handsonuniverse.org/get_images/images/20090802.ngc6992.HOS.jpg ullamcorper mauris很多坦克Laoreet现在的主流酱。 Lorem存有悲坐阿梅德,consectetur adipiscing ELIT。弓,通过仇恨,http://www.prelovac.com/vladimir/wp-content/uploads/2008/03/example.jpg aliquam euismod aliquam ERAT volutpat。但狮子始终是AC ultrices augue luctus eleifend得力士ID。

1将得到的回报将获得:

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

到一个数组。 1需要根据天气的网址或不是它们所包含常规的图像扩展名,如* .JPG,* .png和* .BMP等抢任何人都知道一个存在这样1能避免重蹈覆辙?谢谢!

回答

4

好吧,下面会为你工作,例如:

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

添加你想捕捉任何其他扩展。

注意上面不一定是健壮(它将不匹配www.blah.com/image.jpg例如)。它也将匹配未在扩展名结尾的网址,即使他们是图像(即http://domain.com/blah.jpg?loadsmall=true或东西)。有办法使它更聪明,但它实际上取决于你期待什么样的投入,因为这将推动你解析如何复杂的需要是。

+0

就是不够完善,所有1'm做的是试图展示图片,其中1人时,可以复制粘贴链接,谢谢! – 2012-08-03 15:14:02

+0

1可能会错过一些事,但不能得到它的工作: '$内容=” http://www.gettyimages.com/images/marketing/frontdoorStill/PanoramicImagesRM/FD_image.jpg“; preg_match_all( '/?(HTTPS?:\/\/\ S + \(:GIF | JPG | JPEG))\ S + /',$内容$匹配); 的print_r($比赛),“ 演示: – 2013-04-24 08:40:44

+0

http://codepad.viper-7.com/bgAbt6 1时,其工作删除\ S +底。 – 2013-04-24 12:27:15

1

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

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

学分去一些随机谷歌的结果。

+0

做工作,如果URL会有别的背后或其他任何东西.. 1 ..
像你这样的表演,http://regexr.com?35lba – 2013-07-20 16:58:22

0

如果你不想使用正则表达式做到这一点。相反,解析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'); 
    } 

?>