本帖最后由 dsmyphp 于 2012-02-06 18:00:27 编辑

解决方案 »

  1.   

    利用preg_match_all + PREG_OFFSET_CAPTURE就可以匹配到你想替换的东西,以及匹配的东西的偏移量,接下来怎么做你你懂的。
    <?php
    $a="1234683214312354436214214125436121436";
    $b="76234265832465867892353463476254273434252";
    preg_match_all('#1#',$a,$match,PREG_OFFSET_CAPTURE);
    echo "<pre/>";                                                                                                                                               
    print_r($match);
    ?>
      

  2.   

    <?php
    $a="1234683214312354436214214125436121436";
    $b="76234265832465867892353463476254273434252";
    preg_match_all('#1#',$a,$match,PREG_OFFSET_CAPTURE);
    echo "<pre/>";   
    print_r($match);
    ?>
      

  3.   

    本帖最后由 PhpNewnew 于 2012-02-06 22:41:46 编辑
      

  4.   

    想问下你的办法和2楼的哪位哪个执行效率高一点?
    比如超5000个字符;下面是我按2楼函数写出的丑陋代码,(在次感觉这行我不能达到很高的水平,自卑中。。)看下我的能否有改进提升效率的方法?
    <?php
    $a="!aaaaaaaa!bbbbbbbb!cccccccc!dddddddd!eeeeeeee!fffffff!gggggg";
    preg_match_all('#!#isU',$a,$match,PREG_OFFSET_CAPTURE);
    $zongkh=count($match[0]);  //总共的<括号
    $zjkh=(int)$zongkh/2;                   //中间的括号
    $weizhi=($match[0][$zjkh][1])-6;  //所在位置去前面6位+后2位
    $rrr=substr($a,$weizhi,8);
    $dd=str_replace($rrr,"@@".$rrr,$a);
    echo $dd;
    ?>
      

  5.   


    代码最后发出来写错一个地方。修正     if (in_array($number, $array)) {我给你测试测试,原则上是不用正则则不用正则。当然如果东西不多效率并不会差很多。
      

  6.   


    ${"zbnr".$i}=preg_replace('#</li>#is','',${"zbnr".$i});
    ${"zbnr".$i}=preg_replace('#<li>#is','',${"zbnr".$i});
    ${"zbnr".$i}=preg_replace('#<p>#is','',${"zbnr".$i});
    ${"zbnr".$i}=preg_replace('#</p>#is','',${"zbnr".$i});
    ${"zbnr".$i}=preg_replace('#</i>#is','',${"zbnr".$i});
    ${"zbnr".$i}=preg_replace('#<i>#is','',${"zbnr".$i});
    ${"zbnr".$i}=preg_replace('#<br>#is','',${"zbnr".$i});这种写成这样效率会高点吗?
    ${"zbnr".$i}=preg_replace('#(</li>|<li>|<p>|</p>|</i>|<i>|<br>)#is','',${"zbnr".$i});
      

  7.   

    本帖最后由 PhpNewnew 于 2012-02-06 23:18:58 编辑
      

  8.   

    本帖最后由 PhpNewnew 于 2012-02-06 23:27:45 编辑
      

  9.   


    xdebug +自己写的代码
      

  10.   


            $array = str_split($str);
            $key = array_keys($array, $number);
            $cKey = count($key);
            if ($cKey == 1) {
                 str_replace($number, $change, $str);
            }这部分就是了 自己改一改?
      

  11.   

    这个str_split拆那么多下感觉不好
    我把自己那个改下算了。
    谢谢了!