PHPでウェブサイトから画像を読み込むプログラムを作っています。
ですが、一部のウェブサイトから画像が取得できません。
例えば、Harvardのウェブサイトの画像はうまく読み込めます。
ハーバードの画像のHTMLはこんな感じです。
<img src="http://www.harvard.edu/sites/default/files/feature_item_media/MRI_brain_sagittal_section-w.jpg" alt="MRI scan of a brain" class="img-lg"/> コード
ですがMITの画像は読み込むことができません。
<img typeof="foaf:Image" src="/files/images/news/2017/HP-Instant-Retouch.jpg" width="639" height="426" alt="Innovators use functional fabrics to hack emergency response" /> コード
PHPの正規表現ではsrcから始まり拡張子で終わるところを部分を取得するようにしています。
ハーバードの場合はhttp://からsrcが始まっていますがMITの場合はhttp://が含まれていません。
おそらくこれが画像を取得できない理由だと思うのですが、どのようにすればhttp://web.mit.eduを含めてうまく画像を取得できるでしょうか?
<?php $URL = "http://www.harvard.edu"; image($URL); echo "\n"; function image($targetUrl ){ // get html resourse $htmlSource = @file_get_contents( $targetUrl ); if ( $htmlSource ){ // image file preg_match_all('/src="(.*?(\.jpg|\.jpeg|\.gif|\.png))"/i', $htmlSource, $res); if ( isset( $res[1] ) ){ foreach( $res[1] as $targetImgUrl ) { // file names $fileNameTmp = explode( '/', $targetImgUrl); $fileNameTmp = array_reverse( $fileNameTmp); $fileName = $fileNameTmp[0]; // save image $imgData = @file_get_contents($targetImgUrl); if ($imgData){ @file_put_contents(image.$fileName, $imgData); } } } } } ?> コード
回答2件
あなたの回答
tips
プレビュー