I have a string that looks like this:
1d20+3d6-4d8+10
I would like to split that into:
1d20
, +3d6
, -4d8
, +10
.
preg_split()
consumes the +
and -
symbols. What is the best way to tell it “split at these symbols, but don’t consume them.”? I can brute force a solution, but I’m guessing there’s a simple solution in the PHP standard library that I’m not familiar with.
Advertisement
Answer
You can split using a zero-width forward lookahead for the delimiter (+
or -
):
$string = '1d20+3d6-4d8+10'; print_r(preg_split('/(?=[+-])/', $string));
Output:
Array ( [0] => 1d20 [1] => +3d6 [2] => -4d8 [3] => +10 )