michimani.net

PHPでWEBページ内の画像ファイルを全て保存してみる

2016-06-06

ページ内にある画像を全て保存したいけど いちいち右クリック>名前をつけて保存 とか画像をドラッグアンドドロップでフォルダに移動 とかするのが面倒なときに、対象ページのURLを渡せばページ内の画像を全て保存してくれる処理を考えてみました。

改良版を作りました

動作環境

・Mac OS X ・MAMP

ソース

ライブラリは使わずに、純粋にPHPだけです。

<?php
/**
 * @param String $targetUrl
 */
function getAllImgByUrl( $targetUrl )
{
    // 画像保存先
    $savePath = '/Users/hogehoge/Desktop/savePath/'; //任意の場所

    // htmlソース取得
    $htmlSource = @file_get_contents( $targetUrl );

    if ( $htmlSource )
    {
        // 画像ファイルのURL取得
        preg_match_all( '/src="(.*?(\.jpg|\.jpeg|\.gif|\.png))"/i', $htmlSource, $res ); // (\.jpg|\.jpeg|\.gif|\.png) ここは必要に応じて変更

        if ( isset( $res[ 1 ] ) )
        {
            foreach( $res[ 1 ] as $targetImgUrl )
            {
                // ファイル名生成
                $fileNameTmp = explode( '/', $targetImgUrl );
                $fileNameTmp = array_reverse( $fileNameTmp );
                $fileName = $fileNameTmp[ 0 ];

                // 画像保存
                $imgData = @file_get_contents( $targetImgUrl );
                if ( $imgData )
                {
                    @file_put_contents( self::IMG_SAVE_PATH . $fileName, $imgData );
                }
            }
        }
    }
}

comments powered by Disqus