文章中按一定字符串插入广告代码,不破坏原文章中html代码

    技术2022-05-20  55

    现在有一篇文章,然后我想把这篇文章内插入广告代码(<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 . $ggecho $out ;}else$out = ''$i = 0while($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 ;}


    最新回复(0)