PHP中explode函数和split函数的区别小结


Posted in PHP onAugust 24, 2016

一、前言

之所以做这个,是因为这两个函数的作用很像,都是把字符串转换成数组。

二、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; // *

注意的是,如果第一个参数为空字符串的话,就会产生Warning

var_dump( explode('','asdasd') );

//Warning: explode(): Empty delimiter in /tmp/e80c9663-e392-4f81-8347-35726052678f/code on line 3
//bool(false)

三、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<br />\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: 1973

split的第一个参数为正则表达式,也就是说,如果想要匹配特殊字符,需要转义一下。

$arr='2016\8\11';
$rearr = split ('[/\]', $arr);
var_dump($rearr)

/*
array(3) {
 [0]=>
 string(4) "2016"
 [1]=>
 string(1) "8"
 [2]=>
 string(2) "11"
}
*/

也正是因为要使用正则表达式 pattern 的语法,所以搜索的速度不会很快。

preg_split() 函数使用了 Perl 兼容正则表达式语法,通常是比 split() 更快的替代方案。如果不需要正则表达式的威力,则使用 explode() 更快,这样就不会招致正则表达式引擎的浪费

可能效率的原因导致了PHP 7 中直接放弃了这个函数吧。

四、总结

以上就是总结PHP中explode函数和split函数区别的全部内容,希望对大家的学习和工作能有所帮助。

PHP 相关文章推荐
小偷PHP+Html+缓存
Dec 20 PHP
php隐藏实际地址的文件下载方法
Apr 18 PHP
必须收藏的23个php实用代码片段
Feb 02 PHP
Laravel 5.3 学习笔记之 配置
Aug 28 PHP
php事件驱动化设计详解
Nov 10 PHP
thinkphp Apache配置重启Apache1 restart 出错解决办法
Feb 15 PHP
PHP实现的装箱算法示例
Jun 23 PHP
PDO::prepare讲解
Jan 29 PHP
PHP使用HTML5 FormData对象提交表单操作示例
Jul 02 PHP
laravel多条件查询方法(and,or嵌套查询)
Oct 09 PHP
PHP中通过getopt解析GNU C风格命令行选项
Nov 18 PHP
PHP pthreads v3使用中的一些坑和注意点分析
Feb 21 PHP
php处理单文件、多文件上传代码分享
Aug 24 #PHP
PHP简单创建压缩图的方法
Aug 24 #PHP
php利用header函数下载各种文件
Aug 24 #PHP
php强制下载文件函数
Aug 24 #PHP
PHP简单实现数字分页功能示例
Aug 24 #PHP
PHP自定义函数获取URL中一级域名的方法
Aug 23 #PHP
PHP简单获取网站百度搜索和搜狗搜索收录量的方法
Aug 23 #PHP
You might like
php数组函数序列之in_array() - 查找数组中是否存在指定值
2011/11/07 PHP
通过缓存数据库结果提高PHP性能的原理介绍
2012/09/05 PHP
PHP的switch判断语句的“高级”用法详解
2014/10/01 PHP
php多个文件及图片上传实例详解
2014/11/10 PHP
PHP实现冒泡排序的简单实例
2016/05/26 PHP
些很实用且必用的小脚本代码
2006/06/26 Javascript
JavaScript 读取元素的CSS信息的代码
2010/02/07 Javascript
javascript时间自动刷新实现原理与步骤
2013/01/06 Javascript
JavaScript闭包实例讲解
2014/04/22 Javascript
setTimeout内不支持jquery的选择器的解决方案
2015/04/28 Javascript
利用JavaScript的AngularJS库制作电子名片的方法
2015/06/18 Javascript
jQuery实现网页顶部固定导航效果代码
2015/12/24 Javascript
javascript断点调试心得分享
2016/04/23 Javascript
全面了解addEventListener和on的区别
2016/07/14 Javascript
AngularJS中$http服务常用的应用及参数
2016/08/22 Javascript
angular源码学习第一篇 setupModuleLoader方法
2016/10/20 Javascript
angular2倒计时组件使用详解
2017/01/12 Javascript
AngularJS表格样式简单设置方法示例
2017/03/03 Javascript
Vue代码分割懒加载的实现方法
2017/11/23 Javascript
vue双向数据绑定知识点总结
2018/04/18 Javascript
vue改变对象或数组时的刷新机制的方法总结
2019/04/24 Javascript
Node.js实现批量下载图片简单操作示例
2020/01/18 Javascript
vue ssr+koa2构建服务端渲染的示例代码
2020/03/23 Javascript
[02:32]DOTA2英雄基础教程 祸乱之源
2013/12/23 DOTA
[00:12]2018DOTA2亚洲邀请赛 Somnus丶M出阵单挑
2018/04/06 DOTA
python算法演练_One Rule 算法(详解)
2017/05/17 Python
啥是佩奇?使用Python自动绘画小猪佩奇的代码实例
2019/02/20 Python
Python实现一个数组除以一个数的例子
2019/07/20 Python
Windows下PyCharm配置Anaconda环境(超详细教程)
2020/07/31 Python
Ray-Ban雷朋瑞典官方网站:全球领先的太阳眼镜品牌
2019/08/22 全球购物
自考生自我评价分享
2014/01/18 职场文书
成人继续教育实施方案
2014/03/01 职场文书
竞选班长的演讲稿
2014/04/24 职场文书
化工工艺设计求职信
2014/06/25 职场文书
幼儿园感恩节活动方案
2014/10/06 职场文书
Nginx跨域问题解析与解决
2022/08/05 Servers