preg_split() and explode() in PHP

By Andi, Stig and Derick Viewed: 31793 times Emailed: 165 times Printed: 175 times Bookmark and Share



preg_split() can be used to split a string into substrings by using a regular expression match for the delimiters. PHP provides an explode() function that also splits strings, but explode() can only use a simple string as the delimiter. explode() is much faster than using a regular expression, so you might be better off using explode() when possible. A simple example of preg_splits()’s usage might be to split a string into the words it contains. See the following example:

<?php

$str = 'This is an example for preg_split().';
$words = preg_split('@[\W]+@', $str)
print_r($words);

?>

The script outputs

Array

(

[0] => This
[1] => is
[2] => an
[3] => example
[4] => for
[5] => preg_split
[6] =>

)

As you can see, the last element is empty. By default, the function returns empty elements, too. The character(s) before the end of the string are non-word characters so they act as a delimiter, resulting in an empty element. You can pass two more parameters to the preg_split() function: a limit and a flag. The “limit” parameter controls how many elements are returned before the splitting stops. In the preg_split() example, two elements are returned:

<?php

$str = 'This is an example for preg_split().';
$words = preg_split('@[\W]+@', $str, 2);
print_r($words);

?>

The output is

Array

(

[0] => This
[1] => is an example for preg_split().

)

In the next example, we use -1 as the limit. -1 means that there is no limit at all, and allows us to pass flags without shortening our output array. Three flags specify what is returned: PREG_SPLIT_NO_EMPTY. Prevents empty elements from ending up in the returned array:

<?php

$str = 'This is an example.';
$words = preg_split('@[\W]+@', $str, -1, PREG_SPLIT_NO_EMPTY);
print_r($words);

?>

The script outputs

Array

(

[0] => This
[1] => is
[2] => an
[3] => example

)

PREG_SPLIT_DELIM_CAPTURE. Returns the delimiters itself, but only if the delimiters are surrounded by parentheses. We combine the flag with PREG_SPLIT_NO_EMPTY:

<?php

$str = 'This is an example.';
$words = preg_split('@([\W]+)@', $str, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
print_r($words);

?>

The script outputs

Array

(

[0] => This
[1] =>
[2] => is
[3] =>
[4] => an
[5] =>
[6] => example
[7] => .

)

PREG_SPLIT_OFFSET_CAPTURE. Specifies that the function return a two dimensional array containing both the text and the offset in the string where the element started. In this example, we combine all three flags:

<?php

$str = 'This is an example.';

$words = preg_split( '@([\W]+)@', $str, -1, PREG_SPLIT_OFFSET_CAPTURE |PREG_SPLIT_DELIM_CAPTURE |PREG_SPLIT_NO_EMPTY);

var_export($words);

?>

The script outputs (reformatted):

array (

0 => array ( 0 => 'This', 1 => 0 ),
1 => array ( 0 => ' ', 1 => 4 ),
2 => array ( 0 => 'is', 1 => 5 ),
3 => array ( 0 => ' ', 1 => 7 ),
4 => array ( 0 => 'an', 1 => 8 ),
5 => array ( 0 => ' ', 1 => 10 ),
6 => array ( 0 => 'example', 1 => 11 ),
7 => array ( 0 => '.', 1 => 18 ),

)




Comments(0)


Be the first one to add a comment

Your name (required):


Your email(required, will not be shown to the public):


Your sites URL (optional):


Your comments:


Enter Code:
The Captcha image

Latest Tutorials

[2010-07-03]A Basic Example using PHP in AWS (Amazon Web Services)
[2010-07-03]Building a Video Sharing Site using PHP in AWS
[2010-06-30]XMLRPC for PHP - A simple client and server program
[2010-06-29]How to fix: Warning: Visiting this site may harm your computer - domainameat.cc
[2009-06-13]PHP Warning: Unknown(): Unable to load dynamic library '/usr/local/php4/lib/php/extensions/no-debug ......
[2009-02-24]Using Text file as database in PHP
[2009-02-07]Parent: child process exited with status 3221225477 -- Restarting
[2009-01-14]Install and use PHPUnit to test your PHP pages for errors.
[2008-12-29]Using Codeigniter for PHP application development
[2008-12-01]Creating or Opening a File in PHP
[2008-12-01]Opening a Remote File in PHP
[2008-12-01]Reading contents of a File into a String in PHP
[2008-12-01]Counting Lines, Paragraphs, or Records in a File using pc_split_paragraphs() in PHP
[2008-12-01]Reading word by word from a file in PHP
[2008-12-01]Reading .ini files in PHP

More Latest News

Most Viewed Articles (in last 30 days)
isset() function in PHP
Reading .CSV file in PHP
Parent: child process exited with status 3221225477 -- Restarting
Handling BLOB in PHP and MySQL
Extract files from a .zip file using PHP
Find Difference between two dates in PHP
Appending One Array to Another in PHP
Upload and Download files with FTP in PHP
preg_split() and explode() in PHP
public, protected, and private Properties in PHP
Install and use PHPUnit to test your PHP pages for errors.
preg_match(), function preg_match_all(), preg_grep() in PHP
Reading and Writing .gz files in PHP
Reading word by word from a file in PHP
Opening a Remote File in PHP
Most Emailed Articles (in last 30 days)
Opening a Remote File in PHP
Reading .CSV file in PHP
Counting Lines, Paragraphs, or Records in a File using pc_split_paragraphs() in PHP
Reading word by word from a file in PHP
Removing Duplicate Elements from an Array in PHP
Reading contents of a File into a String in PHP
Find Difference between two dates in PHP
PHP Warning: Unknown(): Unable to load dynamic library '/usr/local/php4/lib/php/extensions/no-debug ......
isset() function in PHP
Different versions of PHP - History and evolution of PHP
Traversing Arrays Using list() and each() in PHP
Setting cookies in PHP
.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable
Creating or Opening a File in PHP
Extract files from a .zip file using PHP