M
Mr. Snoot
Gast
Hio,
mal wieder ein Umlautproblem
Bei der Eingabe von Suchbegriffen, werden Worte vorgeschlagen. Die Buchstaben, die eingetippt wurden, sollen unabhängig von Groß- und Kleinschreibung in den vorgeschlagenen Worten markiert werden. Das klappt im Grunde auch korrekt ...
... aber nicht, wenn Umlaute enthalten sind. Umlaute werden nur dann korrekt markiert, wenn man sie so eingibt - groß oder klein - wie sie auch im Wort vorkommen. Zudem werden auch alle anderen Buchstaben nicht mehr markiert, sobald ein Umlaut falsch eingegeben wurde.
Der Ausdruck dafür sieht so aus:
Das ist ja schön und blöd; nur wie kann es sein, dass Umlaute nicht korrekt durch <strong>$1</strong> ersetzt werden, obwohl sie dennoch bei der Eingabe erkannt werden? Erkannt werden sie, weil mir ja trotzdem die Worte vorgeschlagen werden, nur die Markierung klappt eben nicht
Mit $eingabe passiert vor der Ersetzung eigentlich nichts Großartiges:
Ich hab die Befehle davor auch schon testweise mal alle auskommentiert, aber es hat sich nichts geändert.
mal wieder ein Umlautproblem

Bei der Eingabe von Suchbegriffen, werden Worte vorgeschlagen. Die Buchstaben, die eingetippt wurden, sollen unabhängig von Groß- und Kleinschreibung in den vorgeschlagenen Worten markiert werden. Das klappt im Grunde auch korrekt ...
... aber nicht, wenn Umlaute enthalten sind. Umlaute werden nur dann korrekt markiert, wenn man sie so eingibt - groß oder klein - wie sie auch im Wort vorkommen. Zudem werden auch alle anderen Buchstaben nicht mehr markiert, sobald ein Umlaut falsch eingegeben wurde.
Der Ausdruck dafür sieht so aus:
PHP:
preg_replace("/($eingabe)/i", "<strong>$1</strong>", $anzeige, 1) // ersetzt $eingabe unabhängig von Groß-/Kleinschreibung (i) in $anzeige, nur 1-mal
Das ist ja schön und blöd; nur wie kann es sein, dass Umlaute nicht korrekt durch <strong>$1</strong> ersetzt werden, obwohl sie dennoch bei der Eingabe erkannt werden? Erkannt werden sie, weil mir ja trotzdem die Worte vorgeschlagen werden, nur die Markierung klappt eben nicht

Mit $eingabe passiert vor der Ersetzung eigentlich nichts Großartiges:
PHP:
$eingabe = $_POST["eingabe"]; //Suchbegriff
$eingabe = preg_quote($eingabe); //Verhindert fehlerhafte Zeicheninterpretation in preg_replace (Zeile 22 und 31)
$eingabe = htmlspecialchars($eingabe);
mysql_query("SET NAMES 'utf8'"); # Umlaute korrekt verarbeiten
if (get_magic_quotes_gpc()) $eingabe = stripslashes($eingabe);
$sql = sprintf("SELECT ... FROM ... WHERE ... LIKE '%s%%';", mysql_real_escape_string($eingabe));
$begriff = mysql_query($sql);
while ($antwort=mysql_fetch_array($begriff))
{
$anzeige_fett = preg_replace("/($eingabe)/i", "<strong>$1</strong>", $anzeige, 1)
...
}
Zuletzt bearbeitet: