采集數據,得到的內容往往很糟糕,諸如這個樣子:
<p style="text-align: center; margin-top: 10px; margin-bottom: 10px; line-height: 1.5em;"><strong><span style="font-family: 宋體;letter-spacing: 0;font-size: 16px"><img src="/uploads/image/20180326/1522046288118199.jpg" title="1522046288118199.jpg" alt="微信圖片_20180316100906.jpg"/></span></strong></p><p style="text-align: left; margin-top: 10px; margin-bottom: 10px; line-height: 1.5em;"><strong><span style="font-family: 宋體;letter-spacing: 0;font-size: 16px">一、組織機構<br/></span></strong></p><p style="margin: 10px 0px; text-indent: 2em; line-height: 1.5em;"><strong><span style="font-family: 宋體;letter-spacing: 0;font-size: 16px">主辦單位:</span></strong></p><p style="margin: 10px 0px; text-indent: 2em; line-height: 1.5em;"><span style="font-family: 宋體;letter-spacing: 0;font-size: 16px">中國陶瓷工業協會</span></p>
這玩意好不處理直接存數據庫弊端是很多的:
1、達到一定數量后數據庫占用會非常非常大
2、數據庫訪問速度受影響
3、前端樣式效果無法統一(用戶體驗差)
4、頁面加載速度受影響
……
所有,需要處理后在輸出,既滿足用戶體驗又提高代碼的相應速度,還能減小數據庫的占用,一舉多得!而處理這些亂七八糟的數據,正則替換就必不可少。
實話說,本人老菜,沒能用一句話搞定,分開來處理,php清除src屬性外的所有html標簽屬性的正則如下:
//第一步,處理所有不包含src的標簽,當然如果你有其他屬性要保留,需要再修改 $str=preg_replace('/(<[a-zA-Z]+)((?!src).)*?>/i',"$1>",$str); //第二步,處理img標簽并保留src屬性 $str=preg_replace('/([a-zA-Z]+) (.*?)(src=".*?").*?>/i',"$1 $3>",$str);
未測試很多數據,只是剛剛想到就試了一下,過幾天會處理大量數據,如果有問題,再來更新。效果如下圖所示:
© 致遠 2020-12-06,原創內容,轉載請注明出錯:php正則清除src屬性外的所有html標簽屬性