之前做的客戶端接口中,有把表情圖片轉換為文字標簽的操作,如 -> [大笑],是用的str_replace的數組替換,完后一天,域名變了,悲催了,因為有新舊數據的同時存在,如果延續之前的做法,肯定還要再搞一個數組,主要因為表情一共有100多個,我實在不想那么干(同時對于之前那么干過的同事無比膜拜),可是問題還是需要解決,開始往正則替換方向考慮,但是通常用正則替換是解決的類似這樣的問題:
<? //將src="/uploads/images/20100516000.jpg"替換為src="/uploads/uc/images/20100516000.jpg") $str = "sdfsdfsfsfdfs<img width='123px' src='/uploads/images/20100516000.jpg' height='43px' />sdfsdfsfsdf"; echo preg_replace('/(<img[^>]+?src=["']?[^>]+?)(images/)([^>]+?.(jpg|gif|bmp|bnp|png)["']?[^>]+?>)/i',"${1}uc/images/${3}",$str); ?>
但是我要做的是類似把 <img width='123px' src='/uploads/images/face1.jpg' height='43px' />變成 [大笑] 的工作,仔細查看了一下表情的數據,發現了一個規律,表情圖片鏈接地址的數字部分正好是標簽數組的對應標簽的下標,試想,如果能獲取表情圖片鏈接地址中的數字取出來作為標簽數組下邊,即可獲取該表情圖片的對應標簽,我好像說的比較亂,實際情況是這樣:
表情圖片地址:
<img width='123px' src='/uploads/images/face0.jpg' height='43px' />
<img width='123px' src='/uploads/images/face1.jpg' height='43px' />
<img width='123px' src='/uploads/images/face2.jpg' height='43px' />
<img width='123px' src='/uploads/images/face3.jpg' height='43px' />
<img width='123px' src='/uploads/images/face4.jpg' height='43px' />
……
表情標簽數組:
$biaoqing = array('[發呆]','[大笑]','[壞笑]','[撇嘴]','[可愛]'……)
所以只要能夠獲取0,1,2,3,4;就能用$biaoqing[0],$biaoqing[1],$biaoqing[2],$biaoqing[3],$biaoqing[4]獲取到標簽
嘗試一下:
preg_replace("/<img[^>]+src="http://([^">]+)/face([d]+).png"([^>]+)/>/",$biaoqing["/2"],$content);
結果不起作用,心里哇涼哇涼的,但是總覺得這是一條可行之路,于是開始各種瘋狂查,查手冊,查案例,各種查,終于讓我發現了偉大的修正符e,解決問題。
preg_replace("/<img[^>]+src="http://([^">]+)/face([d]+).png"([^>]+)/>/e",'$biaoqing["/2"]',$content);
成功了,慶祝一下。
PHP編程
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答