for($i=0;$i<strlen($str);$i++)
{
$sub=substr($str,$i,1);
if(ctype_digit($sub))
  $ISNUM[$i]=$sub;
else
  $ISNUM[$i]=" ";
if(ctype_digit($sub))
  $ISSTR[$i]=$sub;
else
  $ISSTR[$i]="";
}

解决方案 »

  1.   

    $ISNUM里面都是数字和空格,你自己根据空格把连续在一起的数字分开就可以了。
    $ISSTR里面是字符和空格,你自己根据空格把连续在一起的字符分开就可以了。
      

  2.   

    for($i=0;$i<strlen($str);$i++)
    {
    $sub=substr($str,$i,1);
    if(ctype_digit($sub))
      $ISNUM[$i]=$sub;
    else
      $ISNUM[$i]=" ";
    if(ctype_digit($sub))
      $ISSTR[$i]="";
    else
      $ISSTR[$i]=$sub;
    }这个是对的,上面有错误,嗬嗬,太着急了写的时候。!!
      

  3.   

    <?php
    $str="AB1234CD";
    $p = array("/(\d+)/","/[A-Z]{1,}/");
    foreach($p as $v) 
    {
    preg_match_all($v,$str,$arr);
    print_r($arr);
    }
    ?>
      

  4.   

    to:bonniewater(陪你去看海)
    好简单。。
      

  5.   

    $str="AB1234CD";
    preg_match_all("|^([a-zA-Z]+)([0-9]+)([a-zA-Z]+)$|",$str,$arr);
    print_r($arr);
    echo $arr[1][0].'----'.$arr[2][0].'----'$arr[3][0].'----';
      

  6.   

    <?php
    $str="AB1234CD";
    $reg = "/[a-zA-Z]+|[0-9]+/";
    preg_match_all($reg,$str,$arr);
    list($head,$number,$tail) = $arr[0];
    echo $head.$number.$tail;
    ?>
      

  7.   

    非常感谢,用preg_match_all 可以了,但是head 和tail 的范围不仅仅限于字母,是除了数字以外任何字符,要怎么表示呢?
      

  8.   

    <?php
    $str="AB1234CD";
    $reg = "/[^\d]+|[\d]+/";
    preg_match_all($reg,$str,$arr);
    print_r($arr[0]);
    ?>