第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

求幫寫一個(gè)php正則替換,我想給提交的p標(biāo)簽添加一個(gè)類名

求幫寫一個(gè)php正則替換,我想給提交的p標(biāo)簽添加一個(gè)類名

躍然一笑 2019-05-20 10:14:14
問題描述問題是這樣的,我想給后端編輯器提交的文章詳情中的p標(biāo)簽添加一個(gè)類名,便于前端渲染的時(shí)候能更好的控制這個(gè)p標(biāo)簽的樣式,一篇文章中有很多p標(biāo)簽,某些p標(biāo)簽已經(jīng)有了這個(gè)類名的話,就不用添加同樣的類名(因?yàn)樵谇岸艘粋€(gè)p標(biāo)簽有兩個(gè)相同的類名會(huì)有些問題,這是個(gè)比較特殊的前端渲染模式),比如后臺(tái)編輯器提交給后端的代碼如下:$content="一段文字文字又一段文字";//想要的結(jié)果$content="一段文字文字又一段文字";最終我想要的結(jié)果是,通過php的preg_replace方法,給第一個(gè)和第二個(gè)沒有“p-name”的p標(biāo)簽添加上“p-name”這個(gè)類名,而第三個(gè)已經(jīng)有了“p-name”的p標(biāo)簽就不用添加,感謝各位兄弟了!
查看完整描述

2 回答

?
犯罪嫌疑人X

TA貢獻(xiàn)2080條經(jīng)驗(yàn) 獲得超4個(gè)贊

一個(gè)正則不好處理,像我這樣處理,效率不高,但是兼容性一定好
$content="

一段文字

文字

又一段文字

";
$addclasses='p-name';
//(img|p)意思是img或p,如果要加上div那就改成(img|p|div)
$content=preg_replace_callback('/<(img|p)([^>]+)?>/',function($matches){
global$addclasses;
//單獨(dú)使用一個(gè)變量,要不然匹配多個(gè)會(huì)導(dǎo)致$addclasses逐個(gè)加上已有class
global$classes;
$classes=$addclasses;
//實(shí)現(xiàn)不修改原有單引號(hào)或雙引號(hào),不修改引號(hào)主要是考慮到個(gè)別情況下需要使用JSON數(shù)據(jù)
global$classquote;
$classquote='"';
$attr='';
$tagname=$matches[1];
//刪除class屬性HTML并提取class到$classes變量
if(!empty($matches[2])){
$attr=preg_replace_callback('/class=(?:"([^"]+)"|\'([^\']+)\')/',function($classmatches){
$thisclasses='';
//雙引號(hào)
if(!empty($classmatches[1])){
$thisclasses=$classmatches[1];
}elseif(!empty($classmatches[2])){
//單引號(hào)
global$classquote;
$classquote="'";
$thisclasses=$classmatches[2];
}
global$classes;
$classes=$thisclasses.''.$classes;
return'';
},$matches[2]);
}
//去空去重
$classes=explode('',$classes);
$classes=array_flip(array_flip(array_filter($classes)));
$classes=join('',$classes);
//如果是img標(biāo)簽過濾一下后面可能存在的/
if($tagname==='img')
$attr=trim(trim($attr,'/'));
//在屬性HTML中加上class屬性
$attr.=sprintf('class=%1$s%2$s%1$s',$classquote,$classes);
//包裝
returnsprintf('<%1$s%2$s>',$tagname,trim($attr));
},$content);
echo$content;
//一段文字

文字

又一段文字

                            
查看完整回答
反對(duì) 回復(fù) 2019-05-20
  • 2 回答
  • 0 關(guān)注
  • 607 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)