//自动采集内容中带有图片地址的远程图片 并保存到本地 |
function my_file_get_contents( $url , $timeout =30) { |
if ( function_exists( 'curl_init' ) ) |
{ |
$ch = curl_init(); |
curl_setopt ( $ch , curlopt_url, $url ); |
curl_setopt ( $ch , curlopt_returntransfer, 1); |
curl_setopt ( $ch , curlopt_connecttimeout, $timeout ); |
$file_contents = curl_exec( $ch ); |
curl_close( $ch ); |
} |
else if ( ini_get ( 'allow_url_fopen' ) == 1 || strtolower ( ini_get ( 'allow_url_fopen' )) == 'on' ) |
{ |
$file_contents = @ file_get_contents ( $url ); |
} |
else |
{ |
$file_contents = '' ; |
} |
return $file_contents ; |
} |
|
function get_remote( $body , $title ){ |
$img_array = array (); |
$img_path = realpath ( "../../../upfile/news/" ). '/' . date ( "y/m/d/" ); //采集远程图片保存地址 |
//die($img_path); |
$img_rpath = '/upfile/news/' . date ( "y/m/d/" ); //设置访问地址 |
$body = stripslashes ( strtolower ( $body )); |
preg_match_all( "/(src|src)=[" |'| ]{0,}(http: //(.*).(gif|jpg|jpeg|png))/isu",$body,$img_array); |
$img_array = array_unique ( $img_array [2]); |
foreach ( $img_array as $key => $value ) { |
$get_file = my_file_get_contents( $value ,60); |
$filetime = time(); |
$filename = date ( "ymdhis" , $filetime ).rand(1,999). '.' . substr ( $value ,-3,3); |
if ( empty ( $get_file )){ |
@sleep(10); |
$get_file = my_file_get_contents( $value ,30); |
if ( empty ( $get_file )){ |
$body = preg_replace( "/" . addcslashes ( $value , "/" ). "/isu" , '/notfound.jpg' , $body ); |
continue ; |
} |
} |
if (! empty ( $get_file ) ){ |
if ( mkdirs( $img_path ) ) |
{ |
$fp = fopen ( $img_path . $filename , "w" ); |
if (fwrite( $fp , $get_file )){ |
$body = preg_replace( "/" . addcslashes ( $value , "/" ). "/isu" , $img_rpath . $filename , $body ); |
} |
fclose( $fp ); |
@sleep(6); |
} |
} |
|
} |
$body = str_replace ( "<img" , "<img " , $body ); |
return $body ; |
|
} |
function mkdirs( $dir ) |
{ |
if (! is_dir ( $dir )){ |
if (!mkdirs(dirname( $dir ))){ |
return false;} |
if (! mkdir ( $dir ,0777)){ |
return false;} |
} |
return true; |
} |
$str = 'fasfsdafsa<img src=/get_pic/2014/01/10/10062300391582.jpg />' ; |
echo get_remote( $str , '图片' ); |