Ja, es wurde ja bereits auf das Wagnis hingewiesen. Eine kompaktere Variante:
preg_replace() verwenden und mittels sog. Special Backtracking Control Verbs <img...>
skippen:
(?i)<img[^>]*>(*SKIP)(*F)|\bNavigation\b
(test auf regex101.com)
Würde auf jeden Fall mögliche Sonderzeichen aus $_GET["s"]
entfernen, z.b.:
$input = '<img src="Navigation.jpg" />Navigation<img src="Navigation.jpg" />';
$_GET["s"] = "Navigation";
if(isset($_GET["s"]) && ($_GET["s"]!==""))
{
// sonderzeichen entfernen / wenn input = utf-8: u modifier anhängen ...~u
$search = trim(preg_replace('~[^-\'\w]+~', " ", $_GET["s"]));
// [^-\'\w] negierte Zeichenklasse; \w = shorthand f. word character [A-Za-z0-9_]
// alle Zeichen gegen Leerzeichen tauschen ausser -\'\w
if(strlen($search) > 0) {
$rex = '~(?i)</?\w[^>]*>(*SKIP)(*F)|\b'.$search.'\b~'; // \b = word boundary
echo preg_replace($rex, '<strong>\0</strong>', $input);
}
}