PHP函数explode和split的区别

前言

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

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 中直接放弃了这个函数吧。

时间: 2024-09-18 03:25:15

PHP函数explode和split的区别的相关文章

【PHP】函数explode和split的区别

前言 之所以做这个,是因为这两个函数的作用很像,都是把字符串转换成数组. explode 从下面的例子可以看出,生成的数组是有对应的顺序的. $pizza = "piece1 piece2 piece3 piece4 piece5 piece6"; $pieces = explode(" ", $pizza); echo $pieces[0]; // piece1 echo $pieces[1]; // piece2 // 示例 2 $data = "fo

实例研究PHP函数isset和empty的区别

实例研究PHP函数isset()和empty()的区别   1  <? php error_reporting(E_ALL);  2  echo   ' <B>未定义$var</b><Br> ' ;  3  echo   " isset测试:<Br> " ;  4  if  ( isset ( $var ))  5 {  6      echo   ' 变量$var存在!<Br> '  ;  7 }  8    9   

浅析javascript函数定义的几种区别

 本篇文章主要是对javascript函数定义的几种区别进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助 javascript函数的定义   1:调用关键字function来构造,如: function distance(x1,x2,y1,y2) { var dx=x2-x1; var dy=y2-y1; return Math.sqrt(dx*dx+dy*dy); }   2:使用Function()构造函数 var f=new Function*"x","

c++-VC++中窗口过程函数的wParam和lParam区别??

问题描述 VC++中窗口过程函数的wParam和lParam区别?? VC++中窗口过程函数的wParam和lParam区别??是什么希望解析 解决方案 我要告诉你的是方法,怎么去自学,而不是结论: 看到 https://msdn.microsoft.com/en-us/library/ms646280(VS.85).aspx 这里(google 搜索wm_keydown msdn第一个结果) wParam The virtual-key code of the nonsystem key. S

stl函数对象和算法的区别

问题描述 stl函数对象和算法的区别 函数对象和算法都是函数,有什么区别,我知道的区别是函数对象主要处理一个元素,而算法主要处理区间实质是循环语句,请问它们本质区别是什么? 解决方案 算法是提供了一系列运算功能,比如sort排序,find查找等.而函数对象是一个对象,在算法函数中,比如sort等,它能够支持函数对象作为一个参数来提供自己定制化的功能,比如sort可以使用你函数对象自己定义的比较的逻辑. 解决方案二: 算法是解决问题的方法,和函数没有关系.算法抽象独立于语言,而函数是编程语言的一个

linux gtk函数 GtkLayout GtkFixed有什么区别呢?

问题描述 linux gtk函数 GtkLayout GtkFixed有什么区别呢? linux gtk函数 GtkLayout GtkFixed有什么区别呢?

c++下面的两种函数的写法有什么区别?第二种写法为什么不对?应怎么改才对?

问题描述 c++下面的两种函数的写法有什么区别?第二种写法为什么不对?应怎么改才对? 3C 方法一:class R{ public: R(int r1int r2):r1(r1)r2(r2){} void print(); void print()const ;private: int r1r2;};void R::print(){ cout<<r1<<"":""<<r2<<endl;}void R::print()

解析php函数method_exists()与is_callable()的区别_php技巧

php函数method_exists() 与is_callable()的区别在哪?在php面相对象设计过程中,往往我们需要在调用某一个方法是否属于某一个类的时候做出判断,常用的方法有 method_exists()和is_callable(),相比之下,is_callable()函数要高级一些,它接受字符串变量形式的方法名作为 第一个参数,如果类方法存在并且可以调用,则返回true.如果要检测类中的方法是否能被调用,可以给函数传递一个数组而不是类的方法名作为参数.数组必须包含对象或类名,以将其作

SQLServer 表值函数与标量值函数 定义方式与调用区别

sqlserver 表值函数与标量值函数 定义方式与调用区别 sql存储过程经常需要调用一些函数来使处理过程更加合理,也可以使函数复用性更强,不过在写sql函数的时候可能会发现,有些函数是在表值函数下写的有些是在标量值下写的,区别是表值函数只能返回一个表,标量值函数可以返回基类型. 标量值函数创建: create function [dbo].[gooswidth] (     @goodscode varchar(20) ) returns float begin        declare