From 59045c0a75356e0ccdb435cd4fc5fe60fef10d7e Mon Sep 17 00:00:00 2001 From: Tim Hunt Date: Thu, 13 Sep 2018 18:03:35 +0100 Subject: [PATCH] MDL-63403 filter_glossary: only prepare the replacement if used --- lib/filterlib.php | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/lib/filterlib.php b/lib/filterlib.php index aa554203f75..cb3fe98a51e 100644 --- a/lib/filterlib.php +++ b/lib/filterlib.php @@ -1328,14 +1328,15 @@ function filter_phrases($text, $linkarray, $ignoretagsopen = null, $ignoretagscl continue; } - // This only has to be done it it hasn't been done before. - if ($linkobject->workreplacementphrase === null) { - filter_prepare_phrase_for_replacement($linkobject); - } - - // Finally we do our highlighting. - $resulttext = preg_replace($linkobject->workregexp, - $linkobject->workreplacementphrase, $text, $pregreplacelimit); + // Do our highlighting. + $resulttext = preg_replace_callback($linkobject->workregexp, + function ($matches) use ($linkobject) { + if ($linkobject->workreplacementphrase === null) { + filter_prepare_phrase_for_replacement($linkobject); + } + + return str_replace('$1', $matches[1], $linkobject->workreplacementphrase); + }, $text, $pregreplacelimit); // If the text has changed we have to look for links again. if ($resulttext != $text) { -- 2.11.4.GIT