Is there way to keep delimiter while using php explode or other similar functions?

I feel this is worth adding. You can keep the delimiter in the “after” string by using regex lookahead to split:

$input = "The address is http://stackoverflow.com/";
$parts = preg_split('@(?=http://)@', $input);
// $parts[1] is "http://stackoverflow.com/"

And if the delimiter is of fixed length, you can keep the delimiter in the “before” part by using lookbehind:

$input = "The address is http://stackoverflow.com/";
$parts = preg_split('@(?<=http://)@', $input);
// $parts[0] is "The address is http://"

This solution is simpler and cleaner in most cases.

Leave a Comment