PHP代碼篇(四)--將字符串按指定字符切割

  說,我有一箇中間接手的需求,什麼叫中間接手呢,就是這個功能已經上線了,而且已經產生數據了,如今要對這個功能進行修改,因此既要知足當下開發的需求,又要兼容之前的功能。簡單說來,就是咱們有一個後臺添加商品的功能,以前是前端寫的後臺頁面,此次進行了平臺切換,因此是後端寫的頁面。因而對於數據,就有了些變化,具體以下:前端

1、老版實際狀況數據庫

  一、商品的添加,字段有商品的屬性,包括名稱、價格、積分這些就不說了,直接是一個input提交過來的,主要是商品詳情,就是平時你們購物,往下滑動查看到的商品圖文詳情,例以下面圖1。就是產品詳情那一塊,由後臺添加多張規格至關的圖片,而後首位拼接在一塊兒,就相似咱們常常看見的「長微信聊天截圖同樣」。查看前端代碼,發現具體實現過程是:將每一張上傳的圖片的完整地址,再加上「<img src=」和「<param>」標籤,而後拼接在一塊兒,而後encodeURIComponent()進行編碼,如圖4Js代碼:後端

  二、如今功能是變動了平臺,就是服務器換了,以前的資源地址,訪問有效,可是再也不繼續添加,添加的新商品圖片地址存在新的服務器裏面。而且由後端對數據格式進行處理,爲了保持訪問端,就是客戶訪問端頁面不作任何修改,因此提交的數據格式,仍是保持如上不變,只是實現方式又後端實現。數組

2、新版PHP實現方式服務器

  一、前端在添加圖片的時候,只用傳多張圖片的URL地址,數組格式。而後對這些URL資源地址進行拼接,而後寫入數據庫,代碼以下:微信

 
 
$content_arr = [
  '0' => '/upload/goods/20190722/f4aed6055dfeb6f9f6db41095bb2777a.jpg',
  '1' => '/upload/goods/20190722/f4aed6055dfeb6f9f6db41095bb4578f.jpg',
  '2' => '/upload/goods/20190722/f4aed6055dfeb6f9f6db41095bb2575e.jpg',
]

//
定義一個商品詳情 $content = ''; //對傳過來的商品圖片數組進行處理 foreach($content_arr as $k=>$v){ if(!$k){ //第一張爲商品主圖片 $info['image'] = request()->domain().$v; }else { //剩餘爲商品詳情,進行拼接 $content .= '<img src='.'"'. request()->domain().$v.'"'.' /><param>'; }
}
//最後進行編碼 $info['content'] = rawurlencode($content);
//最後獲得就是
$info['content'] = "%3Cimg%20src%3D%22http%3A%2F%2Fniushop.jingjinglego.com%2Fupload%2Fgoods%2F20190722%2Ff4aed6055dfeb6f9f6db41095bb2777a.jpg%22%20%2F%3E%3Cparam%3E%3Cimg%20src%3D%22http%3A%2F%2Fniushop.jingjinglego.com%2Fupload%2Fgoods%2F20190722%2F042ae67a6fd89faee455527ac10ca877.png%22%20%2F%3E%3Cparam%3E";

  二、後端展現,由於後端頁面的展現有所變化,以前前端寫的是直接獲取原數據後進行解碼,而後插入到頁面裏面,此次後端實現的方式是,對rawurlencode()編碼後的數據進行還原,還原成傳過來數組格式$content_arr同樣:代碼實現以下dom

$we7_set = new We7AdminSet();
//前端傳來的商品id
$id = request()->get('id',0);
if($id){
   $goods_info = $we7_set->getEidGoodsWay($id);
   $content = rawurldecode($goods_info['content']);//對原數據進行解碼
   $content = str_replace("<img src=","",$content);//替換調標籤字符
   $content = str_replace("<param>", ",", $content);
   $content = str_replace(" />", "", $content);
   $content = str_replace('"', "", $content);
   $content = str_replace(request()->domain().'/', "", $content);//替換掉域名前綴
   $content = rtrim($content,",");//去除先後雜質
   $content = explode(",", $content);//轉成數組
   $goods_info['image'] = str_replace(request()->domain().'/', "", $goods_info['image']);
   array_unshift($content,$goods_info['image']);//將商品主圖片追加進去
   $goods_info['content'] = $content;
   $this->assign("goods_info", $goods_info);//獲取修改商品數據
}

  三、裏面主要是用到編碼rawurlencode()解碼rawurldecode()方法,和字符替換str_replace(str,string)方法,還有往數組第一個位置添加一個元素array_unshift(array,value)的方法。this

  ps:本次主要是對字符串進行處理,總結就是,既要能按格式保存數據,又要能還原原來的數據格式,固然還要更好的方法,和實現過程,歡迎你們的評論留言,謝謝!編碼

相關文章
相關標籤/搜索