检出商品详情中的图片并替换url
图片 url 替换 商品 详情
2023-09-14 09:00:01 时间
原有的批量导入是按照系统本身的功能导入商品,现在需要用接口将图片上传图片服务器
所以需要将批量导入的商品图片取出来,上传后替换掉原来的url
(1)检出详情中的图片,用文件名做key
private function search_content_img($content){ //匹配img标签src属性中?之前部分的正则 $img_pattern = "|<img[^>]+src=['\" ]?([^ '\"?]+)['\" >]|U"; preg_match_all($img_pattern, $content, $img_out, PREG_SET_ORDER); $img_change = array(); foreach ($img_out as $k => $value) { $tmp= $value[1]; $file_info = pathinfo($tmp); $key = $file_info['filename']; $img_change[$key] = array( 'old_img'=> $tmp, 'new_img'=> '', ); } return $img_change; }
(2)找出图片的实际路径,调用上传接口,将生成的url,保存到对应的key
private function change_url($arr,$goods_img_path,$url,$goods_img_url){ $count = 0; $sum = count($arr); foreach ($arr as $key => $value) { $old_img = $value['old_img']; $filename = ""; if(!(strpos($old_img,'http://')===false)){ $filename = str_ireplace($goods_img_url,$goods_img_path,$old_img); }else{ $filename = $goods_img_path.'/'.$old_img; } if(!file_exists($filename)){ continue; } $rs = $this->sendPicToServer($url, $filename); if($rs){ $data = json_decode($rs,true); if($data['error']==0){ $arr[$key]['new_img'] = $data['data']['pic_src']; $count++; } } } return $arr; }
(3)用curl上传图片
function sendPicToServer($url, $filename,$use="avatar",$bizid="102"){ $finfo = finfo_open(FILEINFO_MIME); $mimetype = finfo_file($finfo, $filename); $type = explode(";",$mimetype); finfo_close($finfo); $s = curl_init(); curl_setopt($s, CURLOPT_POST,true); $picture = null; if (PHP_VERSION<5.5) { $picture = "@$filename;type=$mimetype"; }else{ $picture = curl_file_create(@$filename,$type[0]); } $post_data = array ( "picture" =>$picture, ); curl_setopt($s, CURLOPT_POSTFIELDS, $post_data); curl_setopt($s, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0); curl_setopt($s, CURLOPT_URL, $url); curl_setopt($s, CURLOPT_TIMEOUT, 1000); curl_setopt($s, CURLOPT_RETURNTRANSFER, 1); $body = curl_exec($s); if($body===false){ $msg = 'Curl error no: ' . curl_errno($s).","; $msg.= 'Curl error info: ' . curl_error($s)."."; $this->write_log($msg,1); } curl_close($s); return $body; }
(4)替换详情里的图片
private function replace_content_img($content,$arr){ $error = 1; if($arr){ foreach ($arr as $key => $value) { $content = str_replace($value['old_img'], $value['new_img'], $content); } } if(strpos($content,'/shopfw/')===FALSE){ $error = 0; } $rs = array( 'error'=>$error, 'content'=>$content, ); return $rs; }
相关文章
- java解析url的链接和参数_java根据url下载图片
- python浮雕图片_python图片处理PIL
- Java 图片URL转Base64编码
- 图片URL生成_图片转url
- 点击图片查看大图(纯js)详解编程语言
- 详解js插件ajaxupload实现图片上传(适用springboot)编程语言
- 『MySQL连接URL:获取快速、安全连接』(连接mysql的url)
- MySQL存储图片:实现方法及优缺点(mysql数据库存图片)
- 检出商品详情中的图片并替换url详解编程语言
- Linux下运行URL:一种新的操作体验(linux执行url)
- Exploring the Power of Linux: Taking Full Advantage of URL Requets(linux请求url)
- 网页设计 – 图片视频
- MySQL数据库连接:URL指南(mysql db url)
- 将URL队列放入Redis全面优化抓取(url队列放进redis)
- Redis精彩图片节约无限之美(保存图片 redis)
- MySQL处理URL时不进行格式化(mysql不格式化url)
- 利用Redis存储图片,提高效率(图片存redis)
- Oracle数据库中如何插入图片(oracle中插入图片)
- Oracle数据库连接URL设置指南(oracle url设置)
- 真正可用的IIS的ISAPI-Rewrite伪静态URL图片防盗链规则写法
- PHP图片文件上传实现代码
- 使用ThinkPHP自带的Http类下载远程图片到本地的实现代码
- jQuery-onload让第一次页面加载时图片是淡入方式显示
- Android获取SD卡中选中图片的路径(URL)示例
- JQuery实现鼠标移动到图片上显示边框效果