// 远程图片本地化
add_filter(‘content_save_pre’, ‘auto_save_image’);
function auto_save_image($content){
$upload_dir = wp_upload_dir(date(‘Y/m’));
$upload_path = $upload_dir['path'];
$upload_url_path = $upload_dir['url'];
require_once (“../wp-includes/class-snoopy.php”);
$snoopy_Auto_Save_Image = new Snoopy;
$img = array();
if (!empty($_REQUEST['post_title']))
$post_title = wp_specialchars(stripslashes($_REQUEST['post_title']));
$text = stripslashes($content);
preg_match_all(“/ src=(\”|\’){0,}(http:\/\/(.+?))(\”|\’|\s)/is”, $text, $img);
$img = array_unique(dhtmlspecialchars($img[2]));
foreach ($img as $key => $value){
set_time_limit(180); //每个图片最长允许下载时间,秒
if(str_replace(get_bloginfo(‘url’), “”, $value) == $value && str_replace(get_bloginfo(‘home’), “”, $value) == $value){
$fileext = substr(strrchr($value, ‘.’), 1);
$fileext = strtolower($fileext);
if($fileext == “” || strlen($fileext) > 4)
$fileext = “jpg”;
$savefiletype = array(‘jpg’, ‘gif’, ‘png’, ‘bmp’);
if (in_array($fileext, $savefiletype)){
if($snoopy_Auto_Save_Image->fetch($value)){
$get_file = $snoopy_Auto_Save_Image->results;
}else{
echo “error fetching file: ” . $snoopy_Auto_Save_Image->error . “ ”;
echo “error url: ” . $value;
die();
}
$filetime = time();
$filepath = “/” . $upload_path; //图片保存的路径目录
$filename = substr($value, strrpos($value, ‘/’), strrpos($value, ‘.’) – strrpos($value, ‘/’));
$fp = @fopen(“..” . $filepath . $filename . “.” . $fileext, “w”);
@fwrite($fp, $get_file);
fclose($fp);
$wp_filetype = wp_check_filetype($filename . “.” . $fileext, false);
$type = $wp_filetype['type'];
$post_id = (int)$_POST['temp_ID2'];
$title = $post_title;
$url = $upload_url_path . $filename . “.” . $fileext;
$file = $_SERVER['DOCUMENT_ROOT'] . $filepath . $filename . “.” . $fileext;
$attachment = array(‘post_type’ => ‘attachment’,
‘post_mime_type’ => $type,
‘guid’ => $url,
‘post_parent’ => $post_id,
‘post_title’ => $title,
‘post_content’ => ”,
);
$id = wp_insert_attachment($attachment, $file, $post_parent);
$text = str_replace($value, $url, $text); //替换文章里面的图片地址
}
}
}
$content = AddSlashes($text);
remove_filter(‘content_save_pre’, ‘auto_save_image’);
return $content;
}
function dhtmlspecialchars($string){
if(is_array($string)){
foreach($string as $key => $val){
$string[$key] = dhtmlspecialchars($val);
}
}else{
$string = str_replace(array(‘&’, ‘”‘, ‘<‘, ‘>’), array(‘&’, ‘"’, ‘<’, ‘>’), $string);
if(strpos($string, ‘’) !== false) {
$string = preg_replace(‘/&((#(\d{3,5}|x[a-fA-F0-9]{4}));)/’, ‘&\\1′, $string);
}
}
return $string;
}
|