// 是否下载图片 $yct = 1; // 下载远程图片 if ($yct || $base64) { $temp = preg_replace('//siU', '', $value); $temp = preg_replace('//siU', '', $temp); if (preg_match_all("/(src)=([\"|']?)([^ \"'>]+)\\2/i", $temp, $imgs)) { foreach ($imgs[3] as $img) { if ($base64 && preg_match('/^(data:\s*image\/(\w+);base64,)/i', $img, $result)) { // 处理图片 $ext = strtolower($result[2]); if (!in_array($ext, ['png', 'jpg', 'jpeg', 'gif', 'webp'])) { continue; } $content = base64_decode(str_replace($result[1], '', $img)); if (strlen($content) > 30000000) { continue; } $rt = \Phpcmf\Service::L('upload')->base64_image([ 'ext' => $ext, $torname => $content, 'watermark' => \Phpcmf\Service::C()->get_cache('site', SITE_ID, 'watermark', 'ueditor') || $field['setting']['option']['watermark'] ? 1 : 0, 'attachment' => \Phpcmf\Service::M('Attachment')->get_attach_info(intval($field['setting']['option']['attachment']), $field['setting']['option']['image_reduce']), ]); if (!$rt['code']) { continue; } $att = \Phpcmf\Service::M('Attachment')->save_data($rt['data'], 'ueditor:'.$rid); if ($att['code']) { // 归档成功 $value = str_replace($img, $rt['data']['url'], $value); $img = $att['code']; // 标记附件 \Phpcmf\Service::M('Attachment')->save_ueditor_aid($rid, $att['code']); } } else { $ext = _get_image_ext($img); if (!$ext) { continue; } // 下载图片 if ($yct && strpos($img, 'http') === 0) { if (dr_is_app('mfile') && \Phpcmf\Service::M('mfile', 'mfile')->check_upload(\Phpcmf\Service::C()->uid)) { //用户存储空间已满 } else { // 正常下载 // 判断域名白名单 $arr = parse_url($img); $domain = $arr['host']; if ($domain) { $sites = \Phpcmf\Service::R(WRITEPATH.'config/domain_site.php'); if (isset($sites[$domain])) { // 过滤站点域名 } elseif (strpos(SYS_UPLOAD_URL, $domain) !== false) { // 过滤附件白名单 } else { $zj = 0; $remote = \Phpcmf\Service::C()->get_cache('attachment'); if ($remote) { foreach ($remote as $t) { if (strpos($t['url'], $domain) !== false) { $zj = 1; break; } } } if ($zj == 0) { // 可以下载文件 // 下载远程文件 $rt = \Phpcmf\Service::L('upload')->down_file([ 'url' => $img, 'timeout' => 5, 'watermark' => \Phpcmf\Service::C()->get_cache('site', SITE_ID, 'watermark', 'ueditor') || $field['setting']['option']['watermark'] ? 1 : 0, 'attachment' => \Phpcmf\Service::M('Attachment')->get_attach_info(intval($field['setting']['option']['attachment']), $field['setting']['option']['image_reduce']), 'file_ext' => $ext, ]); if ($rt['code']) { $att = \Phpcmf\Service::M('Attachment')->save_data($rt['data'], 'ueditor:'.$rid); if ($att['code']) { // 归档成功 $value = str_replace($img, $rt['data']['url'], $value); $img = $att['code']; // 标记附件 \Phpcmf\Service::M('Attachment')->save_ueditor_aid($rid, $att['code']); } } } } } } } } } } } // 最后得到的文档内容 $save[0][$torname] = $value;