我想实现的功能是这样的,
比如我有一个文本
内容为: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);
?>
比如我有一个文本
内容为: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);
?>
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 秒)
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
))
$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
)