preg_split() and explode() in PHP

By: Andi, Stig and Derick Emailed: 1644 times Printed: 2120 times    

Latest comments
By: rohit kumar - how this program is work
By: Kirti - Hi..thx for the hadoop in
By: Spijker - I have altered the code a
By: ali mohammed - why we use the java in ne
By: ali mohammed - why we use the java in ne
By: mizhelle - when I exported the data
By: raul - no output as well, i'm ge
By: Rajesh - thanx very much...
By: Suindu De - Suppose we are executing

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

)


PHP Home | All PHP Tutorials | Latest PHP Tutorials

Sponsored Links

If this tutorial doesn't answer your question, or you have a specific question, just ask an expert here. Post your question to get a direct answer.



Bookmark and Share

Comments(3)


1. View Comment

Finally! You enlighted me in a small problem: it was not returning the delimiters.
PHP's manual documentation is really brief and doesn't explains well how "it works"

Thanks!


View Tutorial          By: Fernando Martin at 2011-02-25 12:54:58
2. View Comment

Thank you

View Tutorial          By: vbulletincoder at 2011-09-13 13:16:40
3. View Comment

thank you for this quick and easy demonstration. But your regular expression didn't work for me. Instead i used this "/[\s]+/" expression.

View Tutorial          By: rajesh at 2012-09-20 17:48:17

Your name (required):


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


Your sites URL (optional):


Your comments:



More Tutorials by Andi, Stig and Derick
Execution Lifetime of a PHP script
preg_split() and explode() in PHP
preg_replace() and preg_replace_callback() in PHP
preg_match(), function preg_match_all(), preg_grep() in PHP
tmpfile() in PHP
Renaming and Removing Files in PHP
Locking files in PHP
File Handling in PHP
Handling BLOB in PHP and MySQL
Using Sessions in PHP
Using Cookies in PHP
Using PEAR::Crypt_HMAC in PHP
Using HMAC Verification in PHP
Input Validation in PHP
__autoload() METHOD in PHP

More Tutorials in PHP
PHP code to import from CSV file to MySQL
PHP code to write to a CSV file from MySQL query
PHP code to write to a CSV file for Microsoft Applications
Convert XML to CSV in PHP
Password must include both numeric and alphabetic characters - Magento
PHP file upload (Large Files)
PHP file upload prompts authentication for anonymous users
PHP file upload with IIS on windows XP/2000 etc
Error: Length parameter must be greater than 0
Multiple File Upload in PHP using IFRAME
Resume or Pause File Uploads in PHP
Exception in module wampmanager.exe at 000F15A0 in Windows 8
Handling file locks in PHP
HTML table output using Nested for loops in PHP
Count occurrences of a character in a String in PHP

More Latest News
Most Viewed Articles (in PHP )
Exception in module wampmanager.exe at 000F15A0 in Windows 8
isset() function in PHP
Handling BLOB in PHP and MySQL
Reading Cookie Values in PHP
Parent: child process exited with status 3221225477 -- Restarting
Cannot load /usr/local/apache/libexec/libphp4.so into server: ld.so.1:......
Get the next working day in PHP
Return multiple values from a function in PHP
History and origin of PHP
.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable
superglobals in PHP
public, protected, and private Properties in PHP
Reading contents of a File into a String in PHP
Reading word by word from a file in PHP
Appending One Array to Another in PHP
Most Emailed Articles (in PHP)
PHP code to write to a CSV file for Microsoft Applications
PHP code to write to a CSV file from MySQL query
PHP code to import from CSV file to MySQL
Convert XML to CSV in PHP
Using PEAR::Crypt_HMAC in PHP
Password must include both numeric and alphabetic characters - Magento
GDBM, NDBM, DB2, DB3, DBM, and CDB Databases in PHP
Resume or Pause File Uploads in PHP
Comparison operators in PHP
Extract files from a .zip file using PHP
Appending One Array to Another in PHP
Exception in module wampmanager.exe at 000F15A0 in Windows 8
isset() function in PHP
do...while Loops in PHP
Counting Lines, Paragraphs, or Records in a File using pc_split_paragraphs() in PHP