PHP 函式explode和split的區別

2021-09-22 23:28:12 字數 1732 閱讀 2125

之所以做這個,是因為這兩個函式的作用很像,都是把字串轉換成陣列。

從下面的例子可以看出,生成的陣列是有對應的順序的。

$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)

(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

\n";

//php 7 下的報錯

fatal error: uncaught error: call to undefined function

split

()in /tmp/4d38c290-b4cb-43f5-846a-9fa90784a090/code:4

stack

trace:

#0 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)

*/

也正是因為要使用正規表示式 pattern 的語法,所以搜尋的速度不會很快。

preg_split() 函式使用了 perl 相容正規表示式語法,通常是比 split() 更快的替代方案。如果不需要正規表示式的威力,則使用 explode() 更快,這樣就不會招致正規表示式引擎的浪費

可能效率的原因導致了php 7 中直接放棄了這個函式吧。

PHP 函式explode和split的區別

之所以做這個,是因為這兩個函式的作用很像,都是把字串轉換成陣列。從下面的例子可以看出,生成的陣列是有對應的順序的。pizza piece1 piece2 piece3 piece4 piece5 piece6 pieces explode pizza echo pieces 0 piece1 ech...

PHP陣列和explode函式示例總結

例1 echo count province 陣列成員個數 echo if is array province echo for index 0 index 例2 source hello1,hello2,hel 按逗號分離字串 hello explode source for 例3 分隔scjuy...

explode 函式和implode 函式

explode 函式把字串分割為陣列 explode separator,string,limit separator 必需。規定在 分割字串。string 必需。要分割的字串。limit 可選。規定所返回的陣列元素的最大數目。例子 str hello world.it s a beautiful ...