9

I wanted to convert the following split function, which I have been using to preg_split.. it's a little confusing, because the value will change from time to time...

Current code:

$root_dir = 'www';
$current_dir = 'D:/Projects/job.com/www/www/path/source';
$array = split('www', 'D:/Projects/job.com/www/www/path/source', 2);
print_r($array);

Output of the split function:

Array ( [0] => D:/Projects/job.com/ [1] => /www/path/source )
Peter Mortensen
  • 28,342
  • 21
  • 95
  • 123
Basit
  • 13,920
  • 29
  • 88
  • 145

1 Answers1

21

preg_split() is similar to the old ereg-function split(). You only have to enclose the regex in /.../ like so:

preg_split('/www/', 'D:/Projects/job.com/www/www/path/source', 2);

The enclosing slashes / here are really part of the regular expression syntax, not searched for in the string. If the www delimiter is variable, you should additionally use preg_quote() for the inner part.

But note that you don't need regular expressions if you only look for static strings anyway. In such cases you can use explode() pretty much like you used split() before:

explode('www', 'D:/Projects/job.com/www/www/path/source', 2);
mario
  • 138,064
  • 18
  • 223
  • 277
  • 1
    thanks for the answer. i cant accept it, because its giving me massage, that i can accept after 2 mins.. but it work, thanks – Basit Jan 19 '11 at 12:47
  • btw isnt preg_split is faster then explode? – Basit Jan 19 '11 at 12:49
  • 4
    @Basit: Not usually. Explode does a simple binary search, and doesn't have to look for complex/optional patterns. Also it's implemented as core PHP function, thus can deal with PHP strings better and generate a PHP array directly. The preg_split() function is slower because it makes a roundtrip over libPCRE. -- So explode() is always faster. (Regular expression matching with preg_match() OTOH can often be more efficient than simple PHP string function arithmetics.) – mario Jan 19 '11 at 12:50
  • @Basit Just think of the work regex has to do compared to simply splitting a string by a particular keyword, it's obvious `explode()` should be faster! – Christian Jan 29 '12 at 01:23