Hallo mitenand!
Erstmal würde ich dir die Benutzung von preg_quote() für $searchQuery ans Herz legen. Das sorgt dafür, dass kein Benutzer (un)absichtlich nicht erwünschten RegEx-Code in dein Suchmuster einschmuggeln kann.
Stimmt, daran habe ich gar nicht gedacht.
Ich recycle mal einen alten Beitrag. Ein Haken an dem PCRE ist, dass nach dem letzten Tag im HTML-Quelltext kein gewöhnlicher Text mehr kommen darf. Da ein gültiges HTML-Dokument aber mit "</html>" endet, dürfte das kein Problem darstellen.
$pcre = '/' .
preg_quote(html_escape($searchQuery), '/') .
'(?=[^>](<([^>]+|!--.?--)>))/is';
$replace = '<strong class="highlight">$0</strong>';
$contents = preg_replace($pcre, $replace, $haystack);
Super, vielen Dank! Das ist genau das, wonach ich gesucht habe. In der durchsuchten Datenbank wird zwar nicht der gesamte HTML-Code gespeichert, sondern nur der sich von Seite zu Seite ändernde Abschnitt. Allerdings endet auch der normalerweise mit einem HTML-Tag (i.d.R. mit </p>).
@ Felix Riesterer:
Genau. Ich finde dies vor allem bei längeren Seiten praktisch. Es erübrigt sich dann, noch mit der Browser-Suche den Begriff genau zu orten.
Vielen Dank für eure Hilfe!
Liebe Grüsse
Thomas