php下载css里面的图片


http://www.dayanmei.com/php-get-image-from-css/
查找相关文章:php css

本文原创,转载请注明出处 http://www.dayanmei.com/php-get-image-from-css/ 

php下载css里面的图片


1.自动建立图片文件目录

2.过滤重复图片

3.判断远程文件是否存在

4.自动判断图片是远程还是本地图片

/*
* desc: php下载css里面的图片
* autor: laolee.org
*/
set_time_limit ( 0 );

header("Content-Type:text/html;charset=utf-8");

$base_css = 'http://laolee.org/wp-content/themes/traction/stylesheets/master.css';

$css = basename($base_css);
$base = substr($base_css,0,-(strlen($css)));

$styleFileContent = file_get_contents ( $base_css );

preg_match_all ( "/url\((.*)\)/isU", $styleFileContent, $imagesURLArray );
$imagesURLArray = array_unique ( $imagesURLArray [1] );
$i = 0;
foreach ( $imagesURLArray as $imagesURL ) {
	if(strpos($imagesURL,'.css') !== false) {
		continue;
	}
	//判断是否带有单引号和双引号 并且去掉
	$imagesURL = trim_quotation($imagesURL);

	if(strpos($imagesURL,'http') === FALSE) {
		//不含http
		$dir = dirname($imagesURL).'/';
		$dir = trim_parent($dir);
		if($dir == '') {
			$dir = './';
		}
	}else{
		//带http的
		$path_info = parse_url($imagesURL);
		$dir = dirname($path_info['path']).'/';
	}

	if(!is_dir($dir)){
		//创建目录
		createDir($dir);
	}

	if(strpos($imagesURL,'http') === FALSE) {
		$imagesURL = $base.$imagesURL;
		if(strpos($imagesURL,'?') !== false) {
			$tmp = explode('?',$imagesURL);
			$imagesURL = $tmp[0];
		}
	}

	if(check_remote_file_exists($imagesURL)) {
		file_put_contents ( $dir.'/'.basename ( $imagesURL ), file_get_contents ( $imagesURL ) );
		$i++;
	}
}
echo '共抓取了'.$i.'张图片';

function createDir($path) {
	$path = str_replace('\\','/',$path) ;
	if ( is_dir($path) ) return true ;
	if ( file_exists($path) ) return false ;

	$parent = substr($path ,0, strrpos($path,'/') ) ;
	if ( $parent==='' || $parent==='.' || createDir( $parent ) )
	return @mkdir($path) ;
	else return false ;
}

//去掉 ../
function trim_parent($dir) {
	if(substr($dir,0,3) == '../') {
		$dir = substr($dir,3);
		$dir = trim_parent($dir);
	}
	return $dir;
}

//去掉单引号 双引号
function trim_quotation($file) {
	return str_replace(array('"',"'"),array('',''),$file);
}

//检测远程文件是否存在
function check_remote_file_exists($url) {
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_NOBODY, true);
    $result = curl_exec($curl);
    $found = false;
    if ($result !== false) {
        $statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
        if ($statusCode == 200) {
            $found = true;
        }
    }
    curl_close($curl);
    return $found;
}