现在我有一串格式化的字符串
我要求每次遇到5个','后,往后读取3个字符处 切割字符串 比如a,b,21,3efw,123123,dcf (在此处分割) 3,df,23,2ter,13232,asd (在此处分割) ……小弟新学PHP 高手指点啊  

解决方案 »

  1.   

    用explode可以实现,先用分割符生成一个数组,再使用数组每一个元素进行第二次分割,分割符用逗号
      

  2.   

    $str = 'a,b,21,3efw,123123,dcf3,df,23,2ter,13232,asdaa,b,sfs21,3efadw,123123,dcf3,dadf,23,2ter,13232,asadd,ff';
    preg_match_all("/(([^,]+,){5}...).*/iU",$str,$m);
    var_dump($m);
    最后的一段“dd,ff”暂时没分出来……要再想想
      

  3.   

    用正则吧看是否得到你的需求
    <?php$str = 'a,b,21,3efw,123123,dcf3,df,23,2ter,13232,as,dcf3,df,23,2ter,13232,asd';$reg = '/(?:[^,]*,){5}[^,]{0,3}/im';$matches = array();preg_match_all($reg, $str, $matches);print_r($matches);
      

  4.   

    如果还要加上剩余的匹配则是
    <?php$str = 'a,b,21,3efw,123123,dcf3,df,23,2ter,13232,asdaa,b,sfs21,3efadw,123123,dcf3,dadf,23,2ter,13232,asadd,ff';$reg = '/(?:[^,]*,){5}[^,]{0,3}|(?:[^,]*,?){0,4}$/im';$matches = array();preg_match_all($reg, $str, $matches);print_r($matches);
      

  5.   

    $s = 'a,b,21,3efw,123123,dcf3,df,23,2ter,13232,asdxxx';
    preg_match_all('/(?:[^,]*,){5}.{1,3}/s', $s, $r);
    print_r($r);Array
    (
        [0] => Array
            (
                [0] => a,b,21,3efw,123123,dcf
                [1] => 3,df,23,2ter,13232,asd
            ))