作者 刘锟

update

... ... @@ -646,3 +646,39 @@ function redis_add($key,$val,$ttl=3600){
"return redis.call('exists',KEYS[1])<1 and redis.call('setex',KEYS[1],ARGV[2],ARGV[1])", [$key, $val, $ttl], 1
);
}
/**
* 判断远程地址是否需要下载
* @param $url
* @author Akun
* @date 2023/12/08 14:17
*/
function check_remote_url_down($url){
if(!$url){
return false;
}
$arr = parse_url($url);
$scheme = $arr['scheme'] ?? '';
$host = $arr['host'] ?? '';
$path = $arr['path'] ?? '';
if($scheme && !in_array($scheme,['http','https'])){
return false;
}
if(!$host){
return false;
}
$host_arr = explode('.',$host);
if(strpos($host_arr[0],'cnd') !== false){
return false;
}
if(strpos($path, '.') === false){
return false;
}
return true;
}
... ...
... ... @@ -265,7 +265,7 @@ class BlogLogic extends BaseLogic
preg_match_all('/<img\s+[^>]*?src\s*=\s*(\'|\")(.*?)\\1[^>]*?\/?\s*>/i', $data[4], $result);
if($result[2]??[]){
foreach ($result[2] as $img){
$data[4] = str_replace($img,getImageUrl(CosService::uploadRemote($project_id,'image_news',$img)),$data[4]);
check_remote_url_down($img) && $data[4] = str_replace($img,getImageUrl(CosService::uploadRemote($project_id,'image_news',$img)),$data[4]);
}
}
... ... @@ -273,20 +273,25 @@ class BlogLogic extends BaseLogic
preg_match_all('/<source\s+[^>]*?src\s*=\s*(\'|\")(.*?)\\1[^>]*?\/?\s*>/i', $data[4], $result_video);
if($result_video[2]??[]){
foreach ($result_video[2] as $video){
$data[4] = str_replace($video,getImageUrl(CosService::uploadRemote($project_id,'image_news',$video)),$data[4]);
check_remote_url_down($video) && $data[4] = str_replace($video,getImageUrl(CosService::uploadRemote($project_id,'image_news',$video)),$data[4]);
}
}
$text = $data[4];
}
$img = '';
if($data[5]??''){
$img = check_remote_url_down($data[5]) ? CosService::uploadRemote($project_id, 'image_news', $data[5]) : $data[5];
}
$id = $this->model->addReturnId(
[
'name' => $data[0],
'category_id' => $category_id,
'text' => $text,
'remark' => $data[3] ?? '',
'image' => (isset($data[5]) && $data[5]) ? CosService::uploadRemote($project_id, 'image_blog', $data[5]) : '',
'image' => $img,
'seo_title' => $data[6] ?? '',
'seo_keywords' => $data[7] ?? '',
'seo_description' => $data[8] ?? '',
... ...
... ... @@ -299,7 +299,7 @@ class NewsLogic extends BaseLogic
preg_match_all('/<img\s+[^>]*?src\s*=\s*(\'|\")(.*?)\\1[^>]*?\/?\s*>/i', $data[4], $result);
if($result[2]??[]){
foreach ($result[2] as $img){
$data[4] = str_replace($img,getImageUrl(CosService::uploadRemote($project_id,'image_news',$img)),$data[4]);
check_remote_url_down($img) && $data[4] = str_replace($img,getImageUrl(CosService::uploadRemote($project_id,'image_news',$img)),$data[4]);
}
}
... ... @@ -307,20 +307,25 @@ class NewsLogic extends BaseLogic
preg_match_all('/<source\s+[^>]*?src\s*=\s*(\'|\")(.*?)\\1[^>]*?\/?\s*>/i', $data[4], $result_video);
if($result_video[2]??[]){
foreach ($result_video[2] as $video){
$data[4] = str_replace($video,getImageUrl(CosService::uploadRemote($project_id,'image_news',$video)),$data[4]);
check_remote_url_down($video) && $data[4] = str_replace($video,getImageUrl(CosService::uploadRemote($project_id,'image_news',$video)),$data[4]);
}
}
$text = $data[4];
}
$img = '';
if($data[5]??''){
$img = check_remote_url_down($data[5]) ? CosService::uploadRemote($project_id, 'image_news', $data[5]) : $data[5];
}
$id = $this->model->addReturnId(
[
'name' => $data[0],
'category_id' => $category_id,
'text' => $text,
'remark' => $data[3] ?? '',
'image' => (isset($data[5]) && $data[5]) ? CosService::uploadRemote($project_id, 'image_news', $data[5]) : '',
'image' => $img,
'seo_title' => $data[6] ?? '',
'seo_keywords' => $data[7] ?? '',
'seo_description' => $data[8] ?? '',
... ...
... ... @@ -620,7 +620,7 @@ class ProductLogic extends BaseLogic
$img_arr = explode(',',$data[7]);
foreach ($img_arr as $v_img){
if($v_img){
$one_img = CosService::uploadRemote($project_id,'image_product',$v_img);
$one_img = check_remote_url_down($v_img) ? CosService::uploadRemote($project_id,'image_product',$v_img) : $v_img;
if($one_img){
$one_gallery = [
'alt' => '这是一张产品图',
... ... @@ -643,7 +643,7 @@ class ProductLogic extends BaseLogic
preg_match_all('/<img\s+[^>]*?src\s*=\s*(\'|\")(.*?)\\1[^>]*?\/?\s*>/i', $data[5], $result_intro);
if($result_intro[2]??[]){
foreach ($result_intro[2] as $vi_img){
$data[5] = str_replace($vi_img,getImageUrl(CosService::uploadRemote($project_id,'image_product',$vi_img)),$data[5]);
check_remote_url_down($vi_img) && $data[5] = str_replace($vi_img,getImageUrl(CosService::uploadRemote($project_id,'image_product',$vi_img)),$data[5]);
}
}
... ... @@ -651,7 +651,7 @@ class ProductLogic extends BaseLogic
preg_match_all('/<source\s+[^>]*?src\s*=\s*(\'|\")(.*?)\\1[^>]*?\/?\s*>/i', $data[5], $result_intro_video);
if($result_intro_video[2]??[]){
foreach ($result_intro_video[2] as $vi_video){
$data[5] = str_replace($vi_video,getImageUrl(CosService::uploadRemote($project_id,'image_product',$vi_video)),$data[5]);
check_remote_url_down($vi_video) && $data[5] = str_replace($vi_video,getImageUrl(CosService::uploadRemote($project_id,'image_product',$vi_video)),$data[5]);
}
}
... ... @@ -664,7 +664,7 @@ class ProductLogic extends BaseLogic
preg_match_all('/<img\s+[^>]*?src\s*=\s*(\'|\")(.*?)\\1[^>]*?\/?\s*>/i', $data[6], $result_content);
if($result_content[2]??[]){
foreach ($result_content[2] as $vc_img){
$data[6] = str_replace($vc_img,getImageUrl(CosService::uploadRemote($project_id,'image_product',$vc_img)),$data[6]);
check_remote_url_down($vc_img) && $data[6] = str_replace($vc_img,getImageUrl(CosService::uploadRemote($project_id,'image_product',$vc_img)),$data[6]);
}
}
... ... @@ -672,7 +672,7 @@ class ProductLogic extends BaseLogic
preg_match_all('/<source\s+[^>]*?src\s*=\s*(\'|\")(.*?)\\1[^>]*?\/?\s*>/i', $data[6], $result_content_video);
if($result_content_video[2]??[]){
foreach ($result_content_video[2] as $vc_video){
$data[6] = str_replace($vc_video,getImageUrl(CosService::uploadRemote($project_id,'image_product',$vc_video)),$data[6]);
check_remote_url_down($vc_video) && $data[6] = str_replace($vc_video,getImageUrl(CosService::uploadRemote($project_id,'image_product',$vc_video)),$data[6]);
}
}
... ... @@ -698,7 +698,7 @@ class ProductLogic extends BaseLogic
if($result_desc[2]??[]){
foreach ($result_desc[2] as $vdesc_img){
$v_desc['text'] = str_replace($vdesc_img,getImageUrl(CosService::uploadRemote($project_id,'image_product',$vdesc_img)),$v_desc['text']);
check_remote_url_down($vdesc_img) && $v_desc['text'] = str_replace($vdesc_img,getImageUrl(CosService::uploadRemote($project_id,'image_product',$vdesc_img)),$v_desc['text']);
}
}
... ... @@ -706,7 +706,7 @@ class ProductLogic extends BaseLogic
preg_match_all('/<source\s+[^>]*?src\s*=\s*(\'|\")(.*?)\\1[^>]*?\/?\s*>/i', $v_desc['text'], $result_desc_video);
if($result_desc_video[2]??[]){
foreach ($result_desc_video[2] as $vdesc_video){
$v_desc['text'] = str_replace($vdesc_video,getImageUrl(CosService::uploadRemote($project_id,'image_product',$vdesc_video)),$v_desc['text']);
check_remote_url_down($vdesc_video) && $v_desc['text'] = str_replace($vdesc_video,getImageUrl(CosService::uploadRemote($project_id,'image_product',$vdesc_video)),$v_desc['text']);
}
}
}
... ...