Как-то так
...
//Из модификаторов убрать e
$modifiers = ($this->language_data['CASE_SENSITIVE'][$k]) ? '' : 'i';
...
//Заменить это
$stuff_to_parse = preg_replace(
"/([^$disallowed_before])($keyword)(?=[^$disallowed_after])/$modifiers",
"'\\1' . $func2('\\2', '$k', 'BEGIN') . '<|$styles>' . $func('\\2') . '|>' . $func2('\\2', '$k', 'END')",
$stuff_to_parse
);
//На это
$stuff_to_parse = preg_replace_callback(
"/([^$disallowed_before])($keyword)(?=[^$disallowed_after])/$modifiers",
function($matches) use($func, $func2, $styles, $k) {
return $matches[1].
$func2($matches[2], $k, 'BEGIN').
'<|'.$styles.'>'.
$func($matches[2]).
'|>'.
$func2($matches[2], $k, 'END');
},
$stuff_to_parse
);