Heim  >  Artikel  >  Backend-Entwicklung  >  Eine detaillierte Einführung in den Unterschied zwischen den PHP-Funktionen Explodieren und Teilen

Eine detaillierte Einführung in den Unterschied zwischen den PHP-Funktionen Explodieren und Teilen

黄舟
黄舟Original
2017-03-11 09:18:531657Durchsuche

前言

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

explode

从下面的例子可以看出,生成的数组是有对应的顺序的。

$pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);echo $pieces[0]; 
// piece1echo $pieces[1];
 // piece2// 示例 2$data = "foo:*:1023:1000::/home/foo:/bin/sh";
 list($user, $pass, $uid, $gid, $gecos, $home, $shell) = explode(":", $data);
 echo $user; 
 // fooecho $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:4Stack 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=&#39;2016\8\11&#39;;$rearr = split (&#39;[/\]&#39;, $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 中直接放弃了这个函数吧。

Das obige ist der detaillierte Inhalt vonEine detaillierte Einführung in den Unterschied zwischen den PHP-Funktionen Explodieren und Teilen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn