note 102590 added to function.explode

[email protected] Tue, 22 Feb 2011 23:37:04 -0800
Newsgroups php.notes
Message-ID <[email protected]>
If you are looking for a simpler multi-explode that returns a flat array, use a regular expression to standardize all delimiters before exploding.

<?php

// function to explode on multiple delimiters
function multi_explode($pattern, $string, $standardDelimiter = ':')
{
	// replace delimiters with standard delimiter, also removing redundant delimiters
	$string = preg_replace(array($pattern, "/{$standardDelimiter}+/s"), $standardDelimiter, $string);

	// return the results of explode
	return explode($standardDelimiter, $string);
}

// test

	// set up variables
	$string = "zero  one | two :three/ four\ five:: six|| seven eight nine\n ten \televen twelve thirteen fourteen fifteen";
	$pattern = '/[:\|\\\\\/\s]/';  // colon (:), pipe (escaped '\|'), slashes (escaped '\\\\' and '\/'), white space (\s)

	// call function
	$result = multi_explode($pattern, $string);
	
	// display results
	var_dump($result);

?>

Output:

array
  0 => string 'zero' (length=4)
  1 => string 'one' (length=3)
  2 => string 'two' (length=3)
  3 => string 'three' (length=5)
  4 => string 'four' (length=4)
  5 => string 'five' (length=4)
  6 => string 'six' (length=3)
  7 => string 'seven' (length=5)
  8 => string 'eight' (length=5)
  9 => string 'nine' (length=4)
  10 => string 'ten' (length=3)
  11 => string 'eleven' (length=6)
  12 => string 'twelve' (length=6)
  13 => string 'thirteen' (length=8)
  14 => string 'fourteen' (length=8)
  15 => string 'fifteen' (length=7)

See:
http://www.php.net/manual/en/book.pcre.php
----
Server IP: 69.147.83.197
Probable Submitter: 96.225.195.147
----
Manual Page -- http://www.php.net/manual/en/function.explode.php
Edit        -- https://master.php.net/note/edit/102590
Del: integrated  -- https://master.php.net/note/delete/102590/integrated
Del: useless     -- https://master.php.net/note/delete/102590/useless
Del: bad code    -- https://master.php.net/note/delete/102590/bad+code
Del: spam        -- https://master.php.net/note/delete/102590/spam
Del: non-english -- https://master.php.net/note/delete/102590/non-english
Del: in docs     -- https://master.php.net/note/delete/102590/in+docs
Del: other reasons-- https://master.php.net/note/delete/102590
Reject      -- https://master.php.net/note/reject/102590
Search      -- https://master.php.net/manage/user-notes.php