6

次のように文字列を渡すことができる PHP 用の関数または正規表現文字列が必要です。

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。サスペンディス・ポテンティ。Nulla facilisi。サスペンディス・ポテンティ。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 sit amet, consectetur adipiscing elit. Aliquam euismod arcu non odio http://www.prelovac.com/vladimir/wp-content/uploads/2008/03/example.jpg aliquam vestibulum. Sed 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 などの通常の画像拡張子が含まれていない URL を取得する必要があります。ありがとう!

4

3 に答える 3

6

さて、以下はあなたの例のために働くでしょう:

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

キャプチャしたい他の拡張機能を追加します。

上記は必ずしも堅牢ではないことに注意してください(www.blah.com/image.jpgたとえば、一致しない場合)。http://domain.com/blah.jpg?loadsmall=trueまた、画像(つまり、何か)であっても、拡張子で終わっていないURLとは一致しません。よりスマートにする方法はいくつかありますが、実際には、どのような種類の入力を期待しているかによって異なります。これにより、解析がどれほど複雑になる必要があるかが決まります。

于 2012-08-03T06:00:10.770 に答える
5

正規表現でこれを行いたくない場合。代わりに、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'); 
   }

?>
于 2014-01-03T06:12:27.400 に答える
1

正規表現は次のとおりです。 /(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/g

デモ: http: //regexr.com?31ni5

クレジットはいくつかのランダムなGoogleの結果に行きます。

于 2012-08-03T06:03:24.870 に答える