超越PHP PHP动态 | 经典文章 | CLASS | 相关下载 | 常见问题 | FORUM | WIKI | 在线手册
Site search:    
<echofprintf>
Last updated: Fri, 22 Jun 2007

explode

(PHP 3, PHP 4 , PHP 5)

explode -- Split a string by string

Description

array explode ( string separator, string string [, int limit])

Returns an array of strings, each of which is a substring of string formed by splitting it on boundaries formed by the string separator. If limit is set, the returned array will contain a maximum of limit elements with the last element containing the rest of string.

If separator is an empty string (""), explode() will return FALSE. If separator contains a value that is not contained in string, then explode() will return an array containing string.

If the limit parameter is negative, all components except the last limit are returned. This feature was added in PHP 5.1.0.

Although implode() can, for historical reasons, accept its parameters in either order, explode() cannot. You must ensure that the separator argument comes before the string argument.

注: The limit parameter was added in PHP 4.0.1

例子 1. explode() examples

<?php
// Example 1
$pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
echo
$pieces[0]; // piece1
echo $pieces[1]; // piece2

// Example 2
$data = "foo:*:1023:1000::/home/foo:/bin/sh";
list(
$user, $pass, $uid, $gid, $gecos, $home, $shell) = explode(":", $data);
echo
$user; // foo
echo $pass; // *

?>

例子 2. limit parameter examples

<?php
$str
= 'one|two|three|four';

// positive limit
print_r(explode('|', $str, 2));

// negative limit
print_r(explode('|', $str, -1));
?>

The above example will output:

Array
(
    [0] => one
    [1] => two|three|four
)
Array
(
    [0] => one
    [1] => two
    [2] => three
)

注: 该函数适用于二进制对象!

See also preg_split(), spliti(), split(), and implode().




add a note add a note User Contributed Notes
explode
jeremy at fishbowlrecords dot com
23-Oct-2002 02:58
While explode() and implode() are helpful functions, I found I needed to write additional functions to correctly handle two dimensional arrays. Here are the two functions:

These functions based on code from <peter at int8 dot com>.

<?php
// just as double_explode functions akin to explode, so too does
// double_implode to implode
function double_implode($first_break, $second_break, $array)
{
$string = "";
$k=0;
$num_length = count($array);

foreach ($array as $key => $value)
{
// if the element of the main array is an array
if (is_array($array[$key]))
{
// append the string of the converted arary to
// the string being constructed of the whole
// main array
$string .= implode($second_break, $array[$key]);
}
else
{
// append the element to the string
$string .= $array[$key];
}

$k++;

//change here!
// append the delimiting character to the string
if ($k<$num_length)
$string .= $first_break;
}

return $string;
}

// this is a replacement for the internal explode function so that
//  strings representing 2D arrays (ie matrices) maybe made again
//  into their array format
function double_explode($first_break,$second_break,$string)
{
  // creates array based on the first division character
  $array = explode($first_break, $string);

  // loops through the created array in search of any strings
  //  that need to be converted to arrays
  for ($k=0; $k < count($array); $k++)
  {
      // the number of times the second division character
      //  is present
      $count = substr_count($array[$k], $second_break);
     // if the second division character is present; ie,
      //  if the string needs to be converted to an array
      if ($count>0)
      {
          // creates array from string and puts it in
          //  the main array where the string was
        $array[$k] = explode($second_break, $array[$k]);
      }
  }

  return $array;
}
?>

Notice the "if ($k<$num_length)" check near the bottom.  What I found is that without that, any string created would have an extra character at the end, and when exploded w

<echofprintf>
 Last updated: Fri, 22 Jun 2007
view source | feedback | send page | sitemap | aboutus   
Copyright ® 2002-2003 PHPE.NET. All rights reserved
Last updated:2002-11-22