我刚才在php版块发了一个帖子,http://topic.csdn.net/u/20091227/16/9a7e4255-7e38-4e67-b6b0-8323bedc157e.html?seed=1364616637&r=62257269#r_62257269
就一个朋友回答的测试了速度不是很好。
大体要求如下:我想实现的功能是在一篇文章当中固定的正文字符长度之后添加广告: 例如有一篇文章内容如下: <a href="http://baidu.com">我想测试 </a>如果大海能 <strong>挽回 </strong> 
我想实现在正文开始10个字符后添加广告:例如上面的这个正方用程序处理后的结果应当是: 
<a href="http://baidu.com">我想测试 </a>如果大海能 <strong>挽[这里是广告代码]回 </strong> 
因为文章内容不是固定不变的所以想写一算法,请大家帮忙 

希望有朋友有更好的算法跟上,谢谢

解决方案 »

  1.   

    思路,用正则过滤掉“<”开始,“>”结束的内容,然后留下的就是“我想测试如果大海能挽回”,找到第十个字,然后插入代码。so easy!~
      

  2.   

    IE测试OK
    <html><head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>test</title>
    <script>window.onload = function(){
    var result = getAllNodes(document.body,"[这里是广告代码]",10);
    if(!result){
    alert("插入失败!");
    }else{
    alert("插入成功!");
    }
    }var total = 0;//当前字符位置/**
     * node:节点对象
     * advice:广告代码
     * length:广告插入位置
     * return true:插入成功;false:尚未插入
     */
    function getAllNodes(node,advice,length){
    var ret = false;
    var nodes = node.childNodes; for(var i in nodes){
    if(nodes[i].outerHTML){
    ret = getAllNodes(nodes[i],advice,length);
    if(ret){
    break;
    }
    }else if(nodes[i].nodeValue){
    if(nodes[i].nodeValue.length+total>=length){
    nodes[i].nodeValue = nodes[i].nodeValue.substring(0,length-total)+advice+nodes[i].nodeValue.substring(length-total);
    return true;
    }else{
    total += nodes[i].nodeValue.length;
    }
    }
    }
    return ret;
    }</script>
    </head><body>
    <a href="http://baidu.com">我想测试</a>如<div id="div2">果<div id="div1">大</div>海</div>能<strong>挽回</strong>
    </body></html>
      

  3.   

     我觉得是否可以这样,利用正则(preg_replace)匹配你想在多少个(具体多少个,这是LZ你自己用变量保存起来)字符后添加广告,然后把前面匹配到的文本加上你想添加的广告词替换匹配的那些文本