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中使用PDF文档功能
Oct 09 PHP
改变Apache端口等配置修改方法
Jun 05 PHP
PHP 常用函数库和一些实用小技巧
Jan 01 PHP
PHP最常用的ini函数分析 针对PHP.ini配置文件
Apr 22 PHP
PHP面向对象法则
Feb 23 PHP
使用php判断浏览器的类型和语言的函数代码
Feb 28 PHP
PHP5函数小全(分享)
Jun 06 PHP
PHP实现数据分页显示的简单实例
May 26 PHP
Yii2框架实现登陆添加验证码功能示例
Jul 12 PHP
PHP实现一个轻量级容器的方法
Jan 28 PHP
解决laravel查询构造器中的别名问题
Oct 17 PHP
PHP 计算至少是其他数字两倍的最大数的实现代码
May 26 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 utf-8编码问题,utf8编码,数据库乱码,页面显示输出乱码
2013/04/08 PHP
ThinkPHP5&amp;5.1实现验证码的生成、使用及点击刷新功能示例
2020/02/07 PHP
Ucren Virtual Desktop V2.0
2006/11/07 Javascript
jQuery中setTimeout的几种使用方法小结
2013/04/07 Javascript
Jquery实现鼠标移上弹出提示框、移出消失思路及代码
2013/05/19 Javascript
jquery使用jquery.zclip插件复制对象的实例教程
2013/12/04 Javascript
多种方法实现360浏览器下禁止自动填写用户名密码
2014/06/16 Javascript
JS创建类和对象的两种不同方式
2014/08/08 Javascript
BOOTSTRAP时间控件显示在模态框下面的bug修复
2015/02/05 Javascript
javascript实现炫酷的拖动分页
2015/05/11 Javascript
JavaScript实现带箭头标识的多级下拉菜单效果
2015/08/27 Javascript
jQuery实现的Tab滑动选项卡及图片切换(多种效果)小结
2015/09/14 Javascript
JS原型链 详解及示例代码
2016/09/06 Javascript
详解使用fetch发送post请求时的参数处理
2017/04/05 Javascript
使用ef6创建oracle数据库的实体模型遇到的问题及解决方案
2017/11/09 Javascript
Vue动态获取width的方法
2018/08/22 Javascript
基于node.js实现爬虫的讲解
2019/02/18 Javascript
Seajs源码详解分析
2019/04/02 Javascript
vue服务端渲染操作简单入门实例分析
2019/08/28 Javascript
vue中根据时间戳判断对应的时间(今天 昨天 前天)
2019/12/20 Javascript
全局安装 Vue cli3 和 继续使用 Vue-cli2.x操作
2020/09/08 Javascript
关于你不想知道的所有Python3 unicode特性
2014/11/28 Python
python抓取网站的图片并下载到本地的方法
2018/05/22 Python
Python中字符串List按照长度排序
2019/07/01 Python
css3模拟jq点击事件的实例代码
2017/07/06 HTML / CSS
浅谈HTML5新增和废弃的标签
2019/04/28 HTML / CSS
Invicta手表官方商店:百年制表历史的瑞士腕表品牌
2019/09/26 全球购物
机械工程系毕业生求职信
2013/09/27 职场文书
教学改革问题查摆整改措施
2014/09/27 职场文书
高中生第一学年自我鉴定2015
2014/09/28 职场文书
迎国庆横幅标语
2014/10/08 职场文书
公司晚会主持词
2019/04/17 职场文书
仅用几行Python代码就能复制她的U盘文件?
2021/06/26 Python
Vue如何清空对象
2022/03/03 Vue.js
JavaScript前端面试组合函数
2022/06/21 Javascript
JS高级程序设计之class继承重点详解
2022/07/07 Javascript