Sven Rautenberg: preg_replace verschluckt Leerzeichen, oder doch nicht?

Beitrag lesen

Moin!

$anzeige_fett = preg_replace("/($eingabe)/i", "<strong>$1</strong>", $anzeige, 1);

Für das, was du da willst, sind reguläre Ausdrücke eindeutig überzogen. Ein schlichtes str_replace() bzw. str_ireplace() würde vollkommen ausreichen.

Denn was dir eindeutig fehlt, ist ein Escaping der Variablen $eingabe im Hinblick auf Sonderzeichen, die ein regulärer Ausdruck kennen kann. Wenn man das Falsche sucht (beispielsweise etwas mit schließender runder Klammer), dann zerhaut es dir den Regex.

Nicht auszuschließen, dass dir so ein Seiteneffekt schon jetzt die Show kaputt macht.

Wenn ich mir die Ausgabe in Firebug anschaue, dann ist das Leerzeichen aber immer vorhanden, nur in der Vorschlagsliste sieht man es nicht mehr.

Firebugausgabe:

<li><a id="&quot;Amorphes Silicium&quot;" onclick="insert_eingabe(id, 'eingabe', 'suggests')" href

="#">&nbsp;<strong>Amorphes</strong> Silicium</a></li>

  
So sieht man hier, was du eingegeben hast?  
  
 - Sven Rautenberg