diff --git a/typo3/sysext/frontend/Classes/ContentObject/ContentObjectRenderer.php b/typo3/sysext/frontend/Classes/ContentObject/ContentObjectRenderer.php index 7ecee4a1d3e6aecb12c8ff9685de03b7934ba8e2..fa50442a5ab5cd4907936c10e3f9481fcb8634eb 100644 --- a/typo3/sysext/frontend/Classes/ContentObject/ContentObjectRenderer.php +++ b/typo3/sysext/frontend/Classes/ContentObject/ContentObjectRenderer.php @@ -3340,7 +3340,10 @@ class ContentObjectRenderer implements LoggerAwareInterface // Search for tags to process in current data and // call this method recursively if found if (str_contains($data, '<') && isset($conf['tags.']) && is_array($conf['tags.'])) { - foreach ($conf['tags.'] as $tag => $tagConfig) { + // @todo probably use a DOM tree traversal for the whole stuff + // This iterations basically re-processes the markup string, as + // long as there are `<$tag ` or `<$tag>` "tags" found... + foreach (array_keys($conf['tags.']) as $tag) { // only match tag `a` in `<a href"...">` but not in `<abbr>` if (preg_match('#<' . $tag . '[\s/>]#', $data)) { $data = $this->parseFuncInternal($data, $conf);