永发信息网

php分割数组函数 split和explode的区别

答案:2  悬赏:60  手机版
解决时间 2021-04-08 04:05
php分割数组函数 split和explode的区别
最佳答案
一句话总结这三个分割函数的
explode用字符串分割,split和 preg_split用正则分割.
效率方面: explode最快, 其次preg_split最后split.
split()函数
用正则表达式来把字符串拆分并返回数组,如果出错则返回false。
用法: split(string $pattern,string $string [,int $limit])
pattern:相应的正则表达式
string:字符串
limit:指定字符串分割的最大数目
例子1:
$expression="3*5+12/6-15";
$pattern="/";
$limit=3;
$parts=split($pattern,$expression,$limit);
print_r($parts);
?>
结果:

Array
(
[0] => 3*5+12
[1] => 6-15
)
例子2:

$expression="3*5+12/6-15";
$pattern="[+/]";
$limit=3;
$parts=split($pattern,$expression,$limit);
print_r($parts);
?>
结果:

Array
(
[0] => 3*5
[1] => 12
[2] => 6-15
)
preg_split() 函数
用 Perl 兼容正则表达式语法,通常比 split() 更快。
preg_split:用正则表达式分隔字符串

4.3.0版本:增加了标记PREG_SPLIT_OFFSET_CAPTURE.
4.0.5版本:增加了标记PREG_SPLIT_DELIM_CAPTURE.

$str = 'string';
$chars = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
print_r($chars);
?>
以上程序输出样式:

Array
(
[0] => s
[1] => t
[2] => r
[3] => i
[4] => n
[5] => g
)

$str = 'hypertext language programming';
$chars = preg_split('/ /', $str, -1, PREG_SPLIT_OFFSET_CAPTURE);
print_r($chars);
?>
以上程序输出样式:

Array
(
[0] => Array
(
[0] => hypertext
[1] => 0
)

[1] => Array
(
[0] => language
[1] => 10
)

[2] => Array
(
[0] => programming
[1] => 19
)
explode()函数
使用一个字符串分割另一个字符串
// 示例 1
$pizza = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
var_dump($pieces);
?>
输出:

Array
(
[0] => one
[1] => two|three|four
)
全部回答
explode 从下面的例子可以看出,生成的数组是有对应的顺序的。 $pizza = "piece1 piece2 piece3 piece4 piece5 piece6"; $pieces = explode(" ", $pizza); echo $pieces[0]; // piece1 echo $pieces[1]; // piece2 // 示例 2 $data = "foo:*:1023:1000::/home/foo:/bin/sh"; list($user, $pass, $uid, $gid, $gecos, $home, $shell) = explode(":", $data); echo $user; // foo echo $pass; // *1234567891012345678910 注意的是,如果第一个参数为空字符串的话,就会产生warning。 var_dump( explode('','asdasd') ); //warning: explode(): empty delimiter in /tmp/e80c9663-e392-4f81-8347-35726052678f/code on line 3 //bool(false)12341234 split (php 4, php 5) split — 用正则表达式将字符串分割到数组中 注意的是上面并没有php 7,也就是说split函数并不支持php 7. $date = "04/30/1973"; list($month, $day, $year) = split ('[/.-]', $date); echo "month: $month; day: $day; year: $year
\n"; //php 7 下的报错 fatal error: uncaught error: call to undefined function split() in /tmp/4d38c290-b4cb-43f5-846a-9fa90784a090/code:4 stack trace: #0 {main} thrown in /tmp/4d38c290-b4cb-43f5-846a-9fa90784a090/code on line 4 //php 5.6 下返回正常 month: 04; day: 30; year: 197312345678910
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
空腹喝花生牛奶好吗?
显卡出现问题怎么办,电脑显卡出问题了,怎么办
为了增强漂白粉的漂白能力,常在漂白粉中加入
和领导聊天怎么找话题,怎样跟刚认识的人聊天
怎么把工匠精神和计算机联系起来呢
新房子装修过了半年还会有甲醇吗?十四岁的孩
请问检车手刹不达标怎么办
山东的车牌号码格式
有关 皮影 的诗
口碑最好成都婚纱摄影,成都拍婚纱哪家拍的好
我在VM下安装了backtrack5,如何在bt5下找到
梁子湖菜馆在什么地方啊,我要过去处理事情
出租商铺要交什么税,商铺买卖需要交哪些税费
90后怎么赚钱白手起
过门都是客,何必强人所难,是什么意思
推荐资讯
波茨坦会议的历史意义
cos0°多少?
Come加S的用法
淘宝如果给完好评还可以给差评吗
—Excuse me, Mum. When can we have dinner?
1085次列车时刻表
电脑连接别人wifi被拉黑怎么解除?
迷失方向英语迷失方向的英语怎么说?
我检兵全过啦 ,一个村只有去2个,结果告诉我
经常不小心,弄的身上一身伤,还从铁楼梯上摔
怎样去掉桌面小箭头
求首歌,歌词里有“一点泪,一点痛”的!
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?