- preg_replace_callback: documentation ( source)
- preg_replace: documentation ( source)
<?php
$string = 'Some text {spoiler}He <span class="just_testing">dies</span> in the end{/spoiler} but {spoiler}not before becoming a Jedi{/spoiler}';
echo preg_replace_callback('~{spoiler}(.*?)({/spoiler})~s', function($m) {
return '<span class="spoiler">' . preg_replace('~</?span[^>]*>~i', '', $m[1]) . '</span>';
}, $string, -1, $count);
echo "\n---\n";
echo $count;