現在有一篇文章,然後我想把這篇文章內插入廣告代碼(<script src="廣告鏈接"></script>),每隔800字節添加一段廣告代碼。文章中含有若干html標籤,位置不能確定,廣告代碼不能插入到標籤之間,如果插入廣告代碼處正好遇到html標籤,就將廣告代碼插入位置往後移動,直至不在html標籤中爲止。請問代碼該怎麼實現呢?
答:中文 英文 數字 混合,需要注意編碼問題
還要判斷html標籤,還要注意標籤嵌套的問題,還有<img>標籤無嵌套。
$str =<<<eof
㈥現㈣在有一篇文章㈩,然後我想把<font color="#ff0000"><a href="xxx">asd</a></font>這篇文章內插入廣告代碼,<div><font color="#ff0000"><a href="xxxyyy">這個代碼</a></font></div>每隔800字節添加一段廣告代碼。<img =src="xxxxx">文章中含有若干html標籤,<div><img =src="xxxxx"></div>位置不能確定,廣告代碼不能插入到標籤之間,如果插入廣告<div><img =src="xxxxx"> sdfdd</div>代碼處正好遇到html標籤,就將廣告代碼插入<div><img =src="xxxxx"></div>位置往後移動,直至不在html標籤中爲止。<div><img =src="xxxxx"></div>請問代碼該怎麼實現呢?<a href="xxxxx">昨天</a>下了一場大雪。<img src="../img/xx.jpg">這是一張圖⑩片②。
希望大家能給予幫助,謝謝!
㈥現㈣在有一篇文章㈩,然後我想把<font color="#ff0000"><a href="xxx">asd</a></font>這篇文章內插入廣告代碼,<div><font color="#ff0000"><a href="xxxyyy">這個代碼</a></font></div>每隔800字節添加一段廣告代碼。<img =src="xxxxx">文章中含有若干html標籤,<div><img =src="xxxxx"></div>位置不能確定,廣告代碼不能插入到標籤之間,如果插入廣告<div><img =src="xxxxx"> sdfdd</div>代碼處正好遇到html標籤,就將廣告代碼插入<div><img =src="xxxxx"></div>位置往後移動,直至不在html標籤中爲止。<div><img =src="xxxxx"></div>請問代碼該怎麼實現呢?<a href="xxxxx">昨天</a>下了一場大雪。<img src="../img/xx.jpg">這是一張圖⑩片②。
希望大家能給予幫助,謝謝!
㈥現㈣在有一篇文章㈩,然後我想把<font color="#ff0000"><a href="xxx">asd</a></font>這篇文章內插入廣告代碼,<div><font color="#ff0000"><a href="xxxyyy">這個代碼</a></font></div>每隔800字節添加一段廣告代碼。<img =src="xxxxx">文章中含有若干html標籤,<div><img =src="xxxxx"></div>位置不能確定,廣告代碼不能插入到標籤之間,如果插入廣告<div><img =src="xxxxx"> sdfdd</div>代碼處正好遇到html標籤,就將廣告代碼插入<div><img =src="xxxxx"></div>位置往後移動,直至不在html標籤中爲止。<div><img =src="xxxxx"></div>請問代碼該怎麼實現呢?<a href="xxxxx">昨天</a>下了一場大雪。<img src="../img/xx.jpg">這是一張圖⑩片②。
希望大家能給予幫助,謝謝!
eof;
$exa = array('㈠','㈡','㈢','㈣','㈤','㈥','㈦','㈧','㈨','㈩');
$exb = array('①','②','③','④','⑤','⑥','⑦','⑧','⑨','⑩');
$str = str_replace($exa,'',$str);
$str = str_replace($exb,'',$str);
$char = 'gbk'; //設置字符編碼
$gg = '<script src="xxxx"></script>'; //要加的廣告字符
$max = 50 ;//設置截取長度
$all = mb_strlen($str,$char) ;
$p = ceil($all /$max) ; //計算出要分成幾個部分
if(preg_match_all('/(?:<(?!img)[^>]+>)+.*?(?:<///w+>)+/is',$str,$match)){
foreach($match[0] as $k=>$v){
$sk = str_split($k);
$sexa = '';
foreach($sk as $sv){
$sexa .= $exa[$sv] ;
}
$str = str_replace($v ,$sexa,$str);
}
}
if(preg_match_all('/<img[^>]*>/is',$str,$mat)){
foreach($mat[0] as $k=>$v){
$sk = str_split($k);
$sexb = '';
foreach($sk as $sv){
$sexb .= $exb[$sv] ;
}
$str = str_replace($v ,$sexb,$str);
}
}
if($all < $max ){
$out = $str . $gg ;
echo $out ;
}else{
$out = '';
$i = 0 ;
while($i < $p){
$ii = 0 ;
while(($tp = mb_substr($str,$max * $i + $ii,$max,$char))!=''){
if(!in_array(mb_substr($tp,0,1,$char),$exa) && !in_array(mb_substr($tp,0,1,$char),$exb)){
$out .= $tp . $gg ;
break;
}else{
$ii++ ;
}
}
$i++ ;
}
if(!empty($match[0])){
arsort($match[0]);
foreach($match[0] as $k=>$v){
$sk = str_split($k);
$sexa = '';
foreach($sk as $sv){
$sexa .= $exa[$sv] ;
}
$out = str_replace($sexa,$v,$out);
}
}
if(!empty($mat[0])){
arsort($mat[0]);
foreach($mat[0] as $k=>$v){
$sk = str_split($k);
$sexb = '';
foreach($sk as $sv){
$sexb .= $exb[$sv] ;
}
$out = str_replace($sexb,$v,$out);
}
}
echo $out ;
}