diff --git a/src/EventListener/MeilisearchPageMarkerListener.php b/src/EventListener/MeilisearchPageMarkerListener.php index 1a9a0f1..2c6ff57 100644 --- a/src/EventListener/MeilisearchPageMarkerListener.php +++ b/src/EventListener/MeilisearchPageMarkerListener.php @@ -215,8 +215,40 @@ class MeilisearchPageMarkerListener $injection = $hiddenMeta . $marker; - return str_contains($buffer, '') - ? str_replace('', $injection . '', $buffer) - : $buffer . $injection; + return $this->injectIntoMainInside($buffer, $injection); + } + private function injectIntoMainInside(string $buffer, string $injection): string + { + // 1.
finden + $mainPos = stripos($buffer, '
+ return str_contains($buffer, '') + ? str_replace('', $injection . '', $buffer) + : $buffer . $injection; + } + + // 2. Ab dort
suchen + $afterMain = substr($buffer, $mainPos); + $insidePos = stripos($afterMain, '
+ $insertPos = $mainPos + strlen('
'); + return substr($buffer, 0, $insertPos) + . "\n" . $injection . "\n" + . substr($buffer, $insertPos); + } + + // 3. Ende des opening
suchen + $openTagEnd = stripos($afterMain, '>', $insidePos); + if ($openTagEnd === false) { + return $buffer; + } + + $insertPos = $mainPos + $openTagEnd + 1; + + return substr($buffer, 0, $insertPos) + . "\n" . $injection . "\n" + . substr($buffer, $insertPos); } } \ No newline at end of file