我需要将一个字符串中的数字替换,但这字符串可能是 <img alt="" src="/js/kindeditor/attached/20110317193753_63040.jpg" border="0" /> 123456<p>.....,我只要把123456(可能是任意长度数字)清除就可以了,img里面的数字图片名称仍然保留,我该怎么写preg_replace    
 
知道的请留下你的代码或思路  谢谢

解决方案 »

  1.   

    如果你的字符串就这么长,那不是个问题
    替换>和<之间的内容就行问题是字串其他部分呢?还有其他标签么?还有其他img么?
      

  2.   


    字符串可以任意长度,也可能没有任何html标签,也可能有任意标签  关键是我怎么才能找出 >和< 之间的内容呢?
      

  3.   

    有其他标签就不能用这个啦,因为有歧义你要确定你上面这段短字串附近有“唯一”的东西在长字串中,例如长字串中只有这么一个img标签
    否则正则写不出来
      

  4.   

    或者换个思维,匹配需要的,用preg_match_all('/<[^>]+>/',$str,$match)
    比如:
     
     <?php
    $str=<<<HTML
    "<div id=contain>
       <div id=ccc>
         <p>woaini</p>
         <img src=/img/77.jpg></img>
          </div>
        <img src=csdn/woaini.png/>
        <span>格式化</span>
    </div>
    <p><img id=tupian></img>这是图片</p>
    "
    HTML;
    preg_match_all('/<[^>]+>/is',$str,$match);
    foreach($match as $v)
    {
      foreach($v as $k=>$v1)
    {
        
      echo $k."=>".str_replace('<','&lt;',str_replace('>','&gt;',$v1))."<br>";
         }
    }//结果是全都是html标签,连接字符串就是所有的HTML,单个标签的在数组内!
    ?>
     
      

  5.   

    我是这样解决的  echo preg_replace('/(?!<[^>]*)(\d)(?![^<]*>)/i', '', $str);谢谢两位 : )
      

  6.   

    preg_replace('/>([^<]+?)</is','><',$str);不行吗?