Jonny 5: SUchen und ersetzen

Beitrag lesen

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);  
  }  
}  

test auf eval.in, RegEx Kurzreferenz