2012-08-03 101 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'); 
    } 

?>