[BUG] fix glossary preg_replace greediness #17008
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The glossary has a bug where it does not replace the text when there are multiple links in a text.
For instance when a text is something like
<a href="/some-link">some link</a>and some text with sources and <a href="/another">another link</a>
and the glossary looks for 'sources', the search input on preg_replace will be/<a.*\/a>(*SKIP)(*FAIL)|sources/i
, now the replacement will not happen as the .* makes the preg_replace greedy and skip everything between the two links.The fix is to use .*?, which is the change in this PR.