preg_match_all( "/(\d+|\w+)/", "123abc", $arr);
print_r( $arr );不知是不是你想要的结果

解决方案 »

  1.   

    好像不行哦~~~楼上的我试了,不行~~~~
    结果是Array
    (
        [0] => Array
            (
                [0] => 123
                [1] => 123
            )    [1] => Array
            (
                [0] => abc
                [1] => abc
            ))
      

  2.   

    楼主要求的效果或许可以做到,但是正则式就不能用“或”来写了吧。preg_match_all的PREG_SET_ORDER用法应该就是这样的,改不了。不过我有个疑问,Array[1]数组中的第二个元素是哪出来的,照理说应该没有吧
      

  3.   

    ---------- Debug PHP ----------
    其实结果应该是这样的,只不过php应是把Array[1]中的为空的[2]元素给消除了吧!
    Array
    (
        [0] => Array
            (
                [0] => 123
                [1] => 123
                [2] => 
            )    [1] => Array
            (
                [0] => abc
                [1] => 
                [2] => abc
            ))全局正则匹配的情况是,搜索到第一个匹配项之后,接下来的搜索从上一个匹配项末尾开始。
    也就是说,当搜索第一个或的情况\d+时,已经把数字全匹配了,那么就只剩下abc了,abc怎么可能会匹配到数字呢!