聯(lián)系官方銷售客服
1835022288
028-61286886
用自定義函數(shù)過濾掉內(nèi)容中img標(biāo)簽里style所有元素,在custop.php用了下面的代碼,但是發(fā)現(xiàn)會(huì)把p標(biāo)簽里的style也都過濾了,有沒有大神能幫忙看看
$content = preg_replace( '/(<img.*?)(style=.+?[\'|"])|((width)=[\'"]+[0-9]+[\'"]+)|((height)=[\'"]+[0-9]+[\'"]+)/i', '$1' , $content);
首先要知道你用在什么地方,在custop.php只能定義函數(shù)不能寫你這一句代碼
這一段表示查找img標(biāo)簽的下一個(gè)style
如果你有一個(gè)img標(biāo)簽里面沒有style,就會(huì)把下一個(gè)標(biāo)簽里的style刪除
我不是很懂正則,具體怎么弄您再研究研究
有大神能幫忙么
回復(fù)@云畔設(shè)計(jì) 是custop.php里函數(shù)的一部分
有個(gè)辦法
你先把 $content 里的 p替換一下
$content = str_replace("<p style=","<p_s_t_y_l_e=",$content);
$content = preg_replace( '/(<img.*?)(style=.+?[\'|"])|((width)=[\'"]+[0-9]+[\'"]+)|((height)=[\'"]+[0-9]+[\'"]+)/i', '$1' , $content);
$content = str_replace("<p_s_t_y_l_e=","<p style=",$content);
輸出就保留了 p style
不過這個(gè)有個(gè)漏洞,就是如果 p和style 不是連一起的話,可能無法判斷到!
試試這個(gè)
我這個(gè)是讓你的img標(biāo)簽里面只剩下src="***"
剛才在 CSDN 看到一段代碼,可以實(shí)現(xiàn)
上面會(huì)只剩下 src
下面這段則會(huì)保留除了 style 之外的
樓主原來的也類似您這種
這種如果img里面沒有style,就會(huì)把下一個(gè)其他標(biāo)簽的style刪除,也就是樓主想解決的問題
回復(fù)@小黃人 18html.com
回復(fù)@臥龍隱者
不存在的,我這里只替換 <img> 內(nèi)的,不會(huì)自動(dòng)跳到下一個(gè)
這就奇怪了,我這邊不行
回復(fù)@小黃人 18html.com
回復(fù)@臥龍隱者
那就不清楚了,會(huì)不會(huì)是PHP版本問題
回復(fù)@臥龍隱者
試試這個(gè),測試可以通過,結(jié)尾加個(gè)結(jié)束就好了
這樣就行了,高手
回復(fù)@小黃人 18html.com
回復(fù)@臥龍隱者
測試了下,長文應(yīng)該有問題!你那一句是通過了!長文復(fù)雜情況下,可能會(huì)出問題
回復(fù)@臥龍隱者
同一行會(huì)替換下一個(gè)
><p
如果換行,就不會(huì)替換
>
<p
原來如此
樓主的好像也是要換行
回復(fù)@小黃人 18html.com
回復(fù)@臥龍隱者
這樣吧,在原內(nèi)容上,先給 > 弄個(gè)換行,這樣在替換的時(shí)候就不會(huì)延續(xù)了
對于前端也不影響