文章中按一定字符串插入广告代码,不破坏原文章中html代码
来源:互联网 发布:阿里云 物联网 编辑:程序博客网 时间:2024/05/21 23:01
现在有一篇文章,然后我想把这篇文章内插入广告代码(<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 ;
}
- 文章中按一定字符串插入广告代码,不破坏原文章中html代码
- 文章中插入一段代码
- [原blog文章]字符串比较代码
- 把文章中带有的html代码去掉
- 复制并正确使用csdn文章中使用“插入代码”插入的代码
- 在csdn博客文章中加入google广告代码(adsense for content)
- CSDN文章中代码高亮显示
- 免插件在WordPress文章中插入音乐(简单代码测试)
- WordPress分类页 在文章列表的任意位置插入广告代码
- 解决html代码中插入的图片在浏览器中不显示的办法
- html中插入视频的代码
- 在网页中插入背景音乐代码(html)
- html中插入flash代码详解
- html文件中插入PHP代码生效
- html中插入flash代码详解
- CSDN文章中插入图片
- hexo文章中插入图片
- hexo文章中插入图片
- FromCarmackTwitter
- 图片自动缩放 图片调整大小
- 不用双缓冲实现无闪烁图象
- MySQL导入sql 文件的5大步骤
- 经典处世
- 文章中按一定字符串插入广告代码,不破坏原文章中html代码
- CKEditor之servlet接收图片上传
- update 多表联合查询更新 right join+子查询+group分组
- Java日期时间及其格式化
- 学习EXT
- 架势无线CEO叶忻:做面向大众消费的产品
- Ubuntu使用命令安装jdk失败的解决方案--sudo apt-get install sun-java6-jdk
- WPF & ArcGIS Engine三维开发入门攻略
- 比较好的英文学习网站