Sometimes PREG_SPLIT_DELIM_CAPTURE does strange results.
<?php
$content = '<strong>Lorem ipsum dolor</strong> sit <img src="https://www.cheatography.com/proxy.php?base=https%3A%2F%2Fwww.php.net%2Fmanual%2Fen%2Ffunction.preg-split.php&url=https://www.php.net/manual/en/function.preg-split.php/https://www.php.net/manual/en/function.preg-split.phptest.png" />amet <span class="test" style="color:red">consec<i>tet</i>uer</span>.';
$chars = preg_split('/<[^>]*[^\/]>/i', $content, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
print_r($chars);
?>
Produces:
Array
(
[0] => Lorem ipsum dolor
[1] => sit <img src="https://www.cheatography.com/proxy.php?base=https%3A%2F%2Fwww.php.net%2Fmanual%2Fen%2Ffunction.preg-split.php&url=https://www.php.net/manual/en/function.preg-split.php/https://www.php.net/manual/en/function.preg-split.phptest.png" />amet
[2] => consec
[3] => tet
[4] => uer
)
So that the delimiter patterns are missing. If you wanna get these patters remember to use parentheses.
<?php
$chars = preg_split('/(<[^>]*[^\/]>)/i', $content, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
print_r($chars); //parentheses added
?>
Produces:
Array
(
[0] => <strong>
[1] => Lorem ipsum dolor
[2] => </strong>
[3] => sit <img src="https://www.cheatography.com/proxy.php?base=https%3A%2F%2Fwww.php.net%2Fmanual%2Fen%2Ffunction.preg-split.php&url=https://www.php.net/manual/en/function.preg-split.php/https://www.php.net/manual/en/function.preg-split.phptest.png" />amet
[4] => <span class="test" style="color:red">
[5] => consec
[6] => <i>
[7] => tet
[8] => </i>
[9] => uer
[10] => </span>
[11] => .
)