PHP

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

改良版を作りました
続・PHPでWebページ上の画像ファイルをすべて保存する

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

動作環境

・Mac OS X
・MAMP

ソース

ライブラリは使わずに、純粋に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 );
                }
            }
        }
    }
}