PHP获取图像的所有URL的从string(PHP Get All URL's of Ima

2019-06-26 17:54发布

我需要一个函数或正则表达式字符串PHP,我可以通过像这样传递一个字符串:

Lorem存有悲坐阿梅德, http://www.gettyimages.com/images/marketing/frontdoorStill/PanoramicImagesRM/FD_image.jpg consectetur adipiscing ELIT。 但继电器直径毕业临床妆。 智能手机。 法无。 智能手机。 为了http://www.handsonuniverse.org/get_images/images/20090802.ngc6992.HOS.jpg ullamcorper现在mauris很多坦克Laoreet主流酱。 Lorem存有悲坐阿梅德,consectetur adipiscing ELIT。 Aliquam euismod弓,不是因为我恨http://www.prelovac.com/vladimir/wp-content/uploads/2008/03/example.jpg一些门廊。 但狮子始终是AC ultrices augue luctus eleifend得力士ID。

而且我会得到得到的回报:

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 /弗拉基米尔/可湿性粉剂内容/上传/ 2008/03 / example.jpg

在阵列中。 我需要它来抓取URL的基于天气或不是它们所包含常规的图像扩展名,如* .JPG,* .png和* .BMP等任何人都知道一个存在,所以我能避免重蹈覆辙? 谢谢!

Answer 1:

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

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

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

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



Answer 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'); 
   }

?>


Answer 3:

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

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

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



文章来源: PHP Get All URL's of Images From String