php分割数组函数 split()和explode()的区别

2014年07月04日 23:52 by:佚名

导读: explode用字符串分割,split和 preg_split​用正则的把字符串分割为数组.这三个把字符串分割为数组的函数的速度以次是: explode最快, 其次preg_split最后split.

一句话总结这三个分割函数的 

  • explode用字符串分割,split和 preg_split用正则分割.
  • 效率方面: explode最快, 其次preg_split最后split.

split()函数

用正则表达式来把字符串拆分并返回数组,如果出错则返回false。

用法: split(string $pattern,string $string [,int $limit])

  • pattern:相应的正则表达式
  • string:字符串
  • limit:指定字符串分割的最大数目

例子1:

  1. <?php
  2. $expression="3*5+12/6-15";
  3. $pattern="/";
  4. $limit=3;
  5. $parts=split($pattern,$expression,$limit);
  6. print_r($parts);
  7. ?>
结果:
  1. Array
  2. (
  3.     [0] => 3*5+12
  4.     [1] => 6-15
  5. )
例子2:
  1. <?php
  2. $expression="3*5+12/6-15";
  3. $pattern="[+/]";
  4. $limit=3;
  5. $parts=split($pattern,$expression,$limit);
  6. print_r($parts);
  7. ?>
结果:
  1. Array
  2. (
  3.     [0] => 3*5
  4.     [1] => 12
  5.     [2] => 6-15
  6. )

preg_split() 函数

用 Perl 兼容正则表达式语法,通常比 split() 更快。

preg_split:用正则表达式分隔字符串


4.3.0版本:增加了标记PREG_SPLIT_OFFSET_CAPTURE.
4.0.5版本:增加了标记PREG_SPLIT_DELIM_CAPTURE.
  1. <?php
  2. $str = 'string';
  3. $chars = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
  4. print_r($chars);
  5. ?>
以上程序输出样式:
  1. Array
  2. (
  3.     [0] => s
  4.     [1] => t
  5.     [2] => r
  6.     [3] => i
  7.     [4] => n
  8.     [5] => g
  9. )

  1. <?php
  2. $str = 'hypertext language programming';
  3. $chars = preg_split('/ /', $str, -1, PREG_SPLIT_OFFSET_CAPTURE);
  4. print_r($chars);
  5. ?>
以上程序输出样式:
  1. Array
  2. (
  3.     [0] => Array
  4.         (
  5.             [0] => hypertext
  6.             [1] => 0
  7.         )

  8.     [1] => Array
  9.         (
  10.             [0] => language
  11.             [1] => 10
  12.         )

  13.     [2] => Array
  14.         (
  15.             [0] => programming
  16.             [1] => 19
  17.         )

explode()函数

使用一个字符串分割另一个字符串

  1. <?php
  2. // 示例 1
  3. $pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";
  4. $pieces = explode(" ", $pizza);
  5. var_dump($pieces);
  6. ?>

输出:

  1. Array
  2. (
  3.     [0] => one
  4.     [1] => two|three|four
  5. )