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判断上传的Excel文件中是否有图片及PHPExcel库认识
Jan 11 PHP
使用PHP获取当前url路径的函数以及服务器变量
Jun 29 PHP
php记录代码执行时间(实现代码)
Jul 05 PHP
php字符编码转换之gb2312转为utf8
Oct 28 PHP
10个php函数实用却不常见
Oct 13 PHP
详解php魔术方法(Magic methods)的使用方法
Feb 14 PHP
Yii模型操作之criteria查找数据库的方法
Jul 15 PHP
php+mysql+jquery实现简易的检索自动补全提示功能
Apr 15 PHP
thinkPHP框架实现类似java过滤器的简单方法示例
Sep 05 PHP
Laravel框架控制器的middleware中间件用法分析
Sep 30 PHP
layui数据表格自定义每页条数limit设置
Oct 26 PHP
PHP控制循环操作的时间
Apr 01 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 计算代码执行耗时的代码修正网上普遍错误
2011/05/14 PHP
PHP自带函数给数字或字符串自动补齐位数
2014/07/29 PHP
分享微信扫码支付开发遇到问题及解决方案-附Ecshop微信支付插件
2015/08/23 PHP
PHP7之Mongodb API使用详解
2015/12/26 PHP
php中照片旋转 (orientation) 问题的正确处理
2017/02/16 PHP
php实现推荐功能的简单实例
2019/09/29 PHP
document.all还是document.getElementsByName?
2006/07/21 Javascript
JS option location 页面跳转实现代码
2008/12/27 Javascript
jQuery选择头像并实时显示的代码
2010/06/27 Javascript
return false;和e.preventDefault();的区别
2010/07/11 Javascript
iframe 上下滚动条如何默认在下方实现原理
2012/12/10 Javascript
jquery ajax 简单范例(界面+后台)
2013/11/19 Javascript
JavaScript 判断用户输入的邮箱及手机格式是否正确
2013/12/08 Javascript
使用CSS样式position:fixed水平滚动的方法
2014/02/19 Javascript
jQuery插件Tmpl的简单使用方法
2015/04/27 Javascript
jquery.zclip轻量级复制失效问题
2017/01/08 Javascript
详解Vue源码学习之callHook钩子函数
2018/07/25 Javascript
element ui 表格动态列显示空白bug 修复方法
2018/09/04 Javascript
ng-events类似ionic中Events的angular全局事件
2018/09/05 Javascript
Vue的transition-group与Virtual Dom Diff算法的使用
2019/12/09 Javascript
Vue 请求传公共参数的操作
2020/07/31 Javascript
在vue中使用console.log无效的解决
2020/08/09 Javascript
python的正则表达式re模块的常用方法
2013/03/09 Python
python下载图片实现方法(超简单)
2017/07/21 Python
python 实现list或string按指定分段
2019/12/25 Python
Python操作MySQL数据库实例详解【安装、连接、增删改查等】
2020/01/17 Python
python轮询机制控制led实例
2020/05/03 Python
Python验证码截取识别代码实例
2020/05/16 Python
浅谈html5增强的页面元素
2016/06/14 HTML / CSS
行政部岗位职责范本
2014/03/13 职场文书
物流管理系毕业生求职信
2014/06/03 职场文书
销售人员工作自我评价
2014/09/21 职场文书
领导班子对照检查剖析材料
2014/10/13 职场文书
工伤事故处理协议书怎么写
2014/10/15 职场文书
关于React Native 无法链接模拟器的问题
2021/06/21 Javascript
Nginx 配置 HTTPS的详细过程
2022/05/30 Servers