我想实现的功能是这样的,
比如我有一个文本
内容为:13688888888
13688888888
13688888888
13688888888
13688888888
13688888888
14888888888
14888888888
14888888888
14888888888
14888888888
14888888888
14888888888
14888888888是手机号码文本,他们之间的分隔符是换行来分的.
然后我选择要对他们进行分割.
实现内容是:
每5个号码分割为一组 即可
当遇到 不够5个号码时候 那就用少于5个号码那个直接为一组
这是以 5个号码来分割,
求助下大家..下面自己刚刚学习的一些分割 弄不对.
下面分割只分割一个文本 我自己学习的代码
希望大家给我上面一个例子 谢谢 
<?php
$str='我爱你MIki12313212313';
$strlen = mb_strlen($str,'gbk');
$arr = array();
for($i=0;$i<$strlen;$i++){
    if($i%2==0){
        $arr[] = mb_substr($str,$i,2,'gbk');
    }
}
echo implode(',',$arr); 
?> 

解决方案 »

  1.   

    理解有些混乱,这些号码的来源是上面那个工整的排列,还是下面str那种夹杂着其他字符的字符串?两个分割方法不同哦,上面用file() +trim(),下面的要用正则
      

  2.   

    <?php$str = <<<STR
    13688888888
    13688888888
    13688888888
    13688888888
    13688888888
    13688888888
    14888888888
    14888888888
    14888888888
    14888888888
    14888888888
    14888888888
    14888888888
    14888888888
    STR;
    $delimiter = "\n";
    $str = str_replace("\r\n", $delimiter, $str);$i = 0;
    $p = -1;
    $arr = array();while(($t = (strpos($str, $delimiter, $p + 1))) > $p) {
    $i++;
    $p = $t; if($i == 5) {
    // 截取组
    $substr = trim(substr($str, 0, $p));
    $arr[] = explode($delimiter, $substr);

    // 查找剩下的内容
    $str = substr($str, $p + strlen($delimiter));
    // 重置位置和统计
    $p = -1;
    $i = 0;
    }}// 如果str不为空则是不够一组而剩下的
    if($str) {
    $arr[] = explode($delimiter, $str);
    }print_r($arr);---------- PHP run ----------
    Array
    (
        [0] => Array
            (
                [0] => 13688888888
                [1] => 13688888888
                [2] => 13688888888
                [3] => 13688888888
                [4] => 13688888888
            )    [1] => Array
            (
                [0] => 13688888888
                [1] => 14888888888
                [2] => 14888888888
                [3] => 14888888888
                [4] => 14888888888
            )    [2] => Array
            (
                [0] => 14888888888
                [1] => 14888888888
                [2] => 14888888888
                [3] => 14888888888
            ))输出完成 (耗时 0 秒)
      

  3.   

    $s = <<< TEXT
    13688888888
    13688888888
    13688888888
    13688888888
    13688888888
    13688888888
    14888888888
    14888888888
    14888888888
    14888888888
    14888888888
    14888888888
    14888888888
    14888888888
    TEXT;//如果是从文件读取,就用这句
    //$ar = array_map('trim', file('数据文件名'));
    //否则用这句
    $ar = split("[\r\n]+", $s);//切割数组并输出
    print_r(array_chunk($ar, 5));
    Array
    (
        [0] => Array
            (
                [0] => 13688888888
                [1] => 13688888888
                [2] => 13688888888
                [3] => 13688888888
                [4] => 13688888888
            )    [1] => Array
            (
                [0] => 13688888888
                [1] => 14888888888
                [2] => 14888888888
                [3] => 14888888888
                [4] => 14888888888
            )    [2] => Array
            (
                [0] => 14888888888
                [1] => 14888888888
                [2] => 14888888888
                [3] => 14888888888
            ))
      

  4.   

    如果是想切割成5条一组的文本块
    $s = <<< TEXT
    13688888881
    13688888882
    13688888883
    13688888884
    13688888885
    13688888886
    14888888887
    14888888888
    14888888889
    14888888881
    14888888882
    14888888883
    14888888884
    14888888885
    TEXT;preg_match_all("/(?:\d+\s*){1,5}/s", $s, $r);print_r($r[0]);Array
    (
        [0] => 13688888881
    13688888882
    13688888883
    13688888884
    13688888885    [1] => 13688888886
    14888888887
    14888888888
    14888888889
    14888888881    [2] => 14888888882
    14888888883
    14888888884
    14888888885
    )