1.12.3. Discussion
The simplest solution of the bunch is explode( ).
Pass it your separator string, the string to be separated, and an
optional limit on how many elements should be returned:
$dwarves = 'dopey,sleepy,happy,grumpy,sneezy,bashful,doc';
$dwarf_array = explode(',',$dwarves);
Now $dwarf_array is a seven element array:
print_r($dwarf_array);
Array
(
[0] => dopey
[1] => sleepy
[2] => happy
[3] => grumpy
[4] => sneezy
[5] => bashful
[6] => doc
)
If the specified limit is less than the number of possible chunks,
the last chunk contains the remainder:
$dwarf_array = explode(',',$dwarves,5);
print_r($dwarf_array);
Array
(
[0] => dopey
[1] => sleepy
[2] => happy
[3] => grumpy
[4] => sneezy,bashful,doc
)
The separator is treated literally by explode( ).
If you specify a comma and a space as a separator, it breaks the
string only on a comma followed by a space — not on a comma or a
space.
With split( ), you have more flexibility. Instead
of a string literal as a separator, it uses a POSIX regular
expression:
$more_dwarves = 'cheeky,fatso, wonder boy, chunky,growly, groggy, winky';
$more_dwarf_array = split(', ?',$more_dwarves);
This regular expression splits on a comma followed by an optional
space, which treats all the new dwarves properly. Those with a space
in their name aren't broken up, but everyone is
broken apart whether they are separated by
"," or ",
":
print_r($more_dwarf_array);
Array
(
[0] => cheeky
[1] => fatso
[2] => wonder boy
[3] => chunky
[4] => growly
[5] => groggy
[6] => winky
)
$math = "3 + 2 / 7 - 9";
$stack = preg_split('/ *([+\-\/*]) */',$math,-1,PREG_SPLIT_DELIM_CAPTURE);
print_r($stack);
Array
(
[0] => 3
[1] => +
[2] => 2
[3] => /
[4] => 7
[5] => -
[6] => 9
)
The separator regular expression looks for the four mathematical
operators (+, -,
/, *), surrounded by optional
leading or trailing spaces. The
PREG_SPLIT_DELIM_CAPTURE flag tells
preg_split( ) to include the matches as part of
the separator regular expression in parentheses in the returned array
of strings. Only the mathematical operator character class is in
parentheses, so the returned array doesn't have any
spaces in it.