[\t ]{2}
表示tab或空格,匹配2次。不知道你要这个正则有什么用。
或许你解决问题的思路需要改一下。

解决方案 »

  1.   

    $str=preg_replace("/^([ ]*)  /","$1 ",$str);
      

  2.   

    gu1dai(异域苍穹......追夢人) : 行不通! Gdj(陈水.智商只有129.非卖品): 误解我的意思,我要的是把半角变全角!
      

  3.   

    for($i=0;$i<strlen($value);$i++){
    $first  = substr($value,$i,1);
    $second = substr($value,$i+1,1);
    $third  = '';
    if($first == ' ' and $second == ' '){
    $third = ' ';
    $i++;
    $end .= $third;
    continue;
    }else{
    $end .= $first;
    }
    }
    echo '*'.$end."<br>";
      

  4.   

    只不过写错了。只能转第一个空格>:D
    等会有空了我再改正。不过估计一会已经有人发了。
      

  5.   

    没写出来,不过想了一个比较笨一点的办法
    $str = "       aa  bbb   ";
    $aa = str_replace(ltrim($str), "", $str);
    $bb = preg_replace("/([\s]{2})/","\t",$aa);echo $bb.ltrim($str);
      

  6.   

    直接用正则表达式是不能完成的,要借助工具//为了便于检查,分别用_和—代替半角和全角空格//方法一
    function foo($s) {
      $n = floor(strlen($s[1])/2);
      $m = strlen($s[1])%2;
      return str_repeat('—', $n).($m ? substr($s[1], -1) : '');
    }
    $s = '_____ABCD_EFG';
    echo preg_replace_callback('/^(_+)/', 'foo', $s );//方法二
    function foo1($s) {
      $n = floor(strlen($s)/2);
      $m = strlen($s)%2;
      return str_repeat('—', $n).($m ? substr($s, -1) : '');
    }
    $s = '_____ABCD_EFG';
    echo preg_replace('/^(_+)/e', 'foo1("$1")', $s );//方法三
    $s = '_____ABCD_EFG';
    do {
      $t = $s;
      $s = preg_replace('/^(_*)__/', '$1—', $t);
    }while($t != $s);
    echo $s;//方法四
    $s = '________ABCD_EFG';
    $p = array(
    '/(^)__/',
    '/(—)__/',
    '/(—)__/',
    '/(—)__/',
    '/(—)__/',
    '/(—)__/',
    );
    echo '<br>';
    echo preg_replace($p, '$1—', $s);
      

  7.   

    $str='_____ABCD___EFG';echo preg_replace("/^((__)*)(.*?)/e","str_replace('__','—','$1').'$3'",$str);