Ueditor 1.4.3 版本在默认 config 中没了保存文章中的远程图片到本地的配置, 百度出来的改配置都没成功. 也就只能自己后台处理提交的文章内容了, 主要思路为PHP正则匹配出非本地图片路径, 然后图片再保存在本地服务器上, 然后逐一文章中的图片路径.
1. 正则匹配图片路径
// 去除反斜杠 $content = stripslashes ($content); $img_array = []; // 匹配所有远程图片 $pattern = '/src="(http[s]://.*)"/isU'; preg_match_all ($pattern,$content,$img_array); // 删除重复 url $img_arrays = array_unique ($img_array[1]); var_dump($img_arrays) exit;
2. 保存远程图片到本地
function urlImg($url)
{
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_NOBODY, 0); // 只取body头
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$package = curl_exec($ch);
$httpinfo = curl_getinfo($ch);
curl_close($ch);
$imageAll = array_merge(array(
'imgBody' => $package
), $httpinfo);
if ($httpinfo['download_content_length'] > 4 * 1024 * 1024) {
throw new Exception("文件太大", 1);
}
$type = null;
switch ($imageAll['content_type']) {
case 'image/gif':
$type = "gif";
break;
case 'image/webp':
$type = "webp";
break;
case 'image/jpeg':
$type = "jpg";
break;
case 'image/png':
$type = "png";
break;
default:
$type = null;
break;
}
if (!$type) {
throw new Exception("不支持的文件后缀", 1);
}
// 文件保存目录路径(请更换为你自己的路径, 你可以var_dump一下)
$save_path = realpath($_SERVER ['DOCUMENT_ROOT'] . 'upload') . '/' . date ( "Ymd" );
$imgName = generate_stochastic_string(12); /* 生成随机字符串 详情见(http://www.huwhois.cn/index/2019/04-08/5.html) */
if (!file_exists($save_path )) {
mkdir($temp, 0755, true);
}
$filename= $save_path . $imgName . $type;
file_put_contents($filename, $imageAll["imgBody"]);
return filename;
}3. 替换文章中的远程图片链接
function saveRomteImage($content)
{
$content = stripslashes($content);
$img_array = [];
// 匹配所有远程图片
$pattern = '/src="(http[s]://.*)"/isU';
preg_match_all($pattern, $content, $img_array);
// 删除重复 url
$img_arrays = array_unique($img_array[1]);
foreach ($img_arrays as $value) {
$filename = urlImg($value);
// dump($filename);
$content = str_replace($value, $filename, $content);
}
return $content;
}很赞哦! ( 1 )