以前にも似たような質問をしたのですが、新たにわからない部分があるので質問させていただきます。
PHPでHTMLからimg srcを抽出をしようとしているのですがhttps...jpg, https...jpgは取得できるのですが/hoge/hogehoge...jpgのようにイメージソースが/(スラッシュ)から始まる場合はうまく取得できません。
<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"/> コード
上記の場合はこのようにうまく取得できます。
http://www.harvard.edu/sites/default/files/feature_item_media/MRI_brain_sagittal_section-w.jpg
ですが下記のようなスラッシュから始まる場合だと何も取得できません。
<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" /> コード
正規表現はこのようにしています。
preg_match_all('/[src|srcset]\s*=\s*[\'|\"]\s*(.*?(\.jpg|\.jpeg|\.gif|\.png))/i', $htmlSource, $res); コード
具体的なコード
$URL = "http://web.mit.edu"; image($URL); echo "\n"; function image($targetUrl ){ // get html resourse $htmlSource = @file_get_contents( $targetUrl ); if ( $htmlSource ){ // image file preg_match_all('/[src|srcset]\s*=\s*[\'|\"]\s*(.*?(\.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); } } } } } ?> コード
どのようにすればhttp及びスラッシュから始まるsrcを取得することが出来ますか?
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/04 00:46
2017/08/04 00:47
2017/08/04 00:55
2017/08/04 01:02
2017/08/04 01:03
2017/08/04 01:07
2017/08/04 01:28
2017/08/04 01:34