Try about using:
$output = preg_split('/ (@|vs) /', $input);
You can take the first string, replace all the @
with vs
using str_replace
, then explode on vs
or vice versa.
function multiexplode ($delimiters,$string) {
$ready = str_replace($delimiters, $delimiters[0], $string);
$launch = explode($delimiters[0], $ready);
return $launch;
}
$text = "here is a sample: this text, and this will be exploded. this also | this one too :)";
$exploded = multiexplode(array(",",".","|",":"),$text);
print_r($exploded);
//And output will be like this:
// Array
// (
// [0] => here is a sample
// [1] => this text
// [2] => and this will be exploded
// [3] => this also
// [4] => this one too
// [5] => )
// )
Source: php@metehanarslan at php.net
How about using strtr()
to substitute all of your other delimiters with the first one?
private function multiExplode($delimiters,$string) {
return explode(
$delimiters[0],
strtr(
$string,
array_combine(
array_slice( $delimiters, 1 ),
array_fill(
0,
count($delimiters)-1,
array_shift($delimiters)
)
)
)
);
}
It's sort of unreadable, I guess, but I tested it as working over here.
One-liners ftw!
Wouldn't strtok()
work for you?
Simply you can use the following code:
$arr=explode('sep1',str_replace(array('sep2','sep3','sep4'),'sep1',$mystring));
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With