由于PHP升级导致旧版本的auto-save-image版本不能使用。于是花了些时间,将其修复并改进了一下,修改文件为auto-save-image.php。
1.更正:将split替换为explode
2.增加了对https网站自动保存的支持。
3.未修复的BUG。
在
if (get_magic_quotes_gpc()) $content1 = stripslashes($content1);
行后增加一行,并替换原来的正则表达式。
$content1 = htmlspecialchars_decode($content1);//写入数组时写入转义字符,针对网址中含有&等符号,无法直接访问。 preg_match_all('/<\s*img\s+[^>]*?src\s*=\s*(\'|\")(.*?)\\1[^>]*?\/?\s*>/i',$content1,$img_array);//使其完全匹配
将if (str_replace(get_bloginfo(‘url’), “”, $value) == $value && str_replace(get_bloginfo(‘home’), “”, $value) == $value)之后,至
$filetime = time();之间的代码,即
$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(); }
全部替换为
$value = htmlspecialchars_decode($value);//将转义字符转回 if (strstr($value, "https://")) { $fileext = "jpg"; } else { $fileext = substr(strrchr($value, '.'), 1);//获取文件后辍名 $fileext = strtolower($fileext); if ($fileext == "" || strlen($fileext) > 4) $fileext = "jpg";//对于无法获取后辍名的文件,如htts形式只有网址的文件。 } $savefiletype = array('jpg', 'gif', 'png', 'bmp'); if (in_array($fileext, $savefiletype)) { $get_file = ""; $get_file = getHTTPS($value);//以上部分为更改内容 $filetime = time();
在最后增加函数,同时支持HTTP和HTTPS访问():
function getHTTPS($url) { $ch = curl_init();// 启动一个CURL会话 if (strstr($url, "https://")) { curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);// 对认证证书来源的检查,如果非https刚不检查。 } curl_setopt($ch, CURLOPT_HEADER, false);// 显示返回的Header区域内容 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);// 使用自动跳转 curl_setopt($ch, CURLOPT_URL, $url);// 要访问的地址 curl_setopt($ch, CURLOPT_REFERER, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);// 获取的信息以文件流的形式返回 $result = curl_exec($ch); curl_close($ch); return $result; }
转载请注明出处:达维营
仍旧有的bug是,针对极个别网站,可能出现如下图片的情况:
通过该网址https://www.dvy.com.cn/wp-content/uploads/2017/11/003111QxC.png通过方法
$headers = get_headers($value3, 1); $type = $headers['Content-Type']; echo $type