Sie befinden sich hier im Forenarchiv von phpforum.de wenn Sie direkt ins Forum möchten, klicken Sie bitte hier. Zur Startseite kommen Sie hier.

Probleme mit preg_replace() (ersetzen von Zeichen/wörtern)

Hallo allerseits,

folgendes Problem habe ich: Ich möchte über ein Formular Daten in eine Datenbank eintragen, was funktioniert. Jedoch habe ich teilweise Texte, die etwas seltsame Zeichen benutzen (z.B. Anführungsstriche (unten: „ oben: “), Gedankenstriche (–)). Diese werden nach der übergabe durch das Formular durch Fragezeichen ersetzt.

Deshalb habe ich hier im Forum gesucht und gefunden, dass man Zeichen und Wörter mit der Funktion preg_replace() ersetzen kann. also habe ich folgendes ausprobiert (die variable $text kommt aus dem Formular):

Code:                   In Zwischenablage kopieren (nur IE)
1">

Das ersetzen von Wörtern funktioniert damit, aber nicht mit den Zeichen. Liegt es daran, dass das Formular schon das Fragezeichen übergibt? Oder dass es keine html-tags sondern die Zeichen übergibt (also " statt “)? Wäre schön wenn mir da jemand helfen könnte.

ronahi

Um das nochmal an einem kurzen Beispiel zu verdeutlichen: Ich habe folgenden Text: "Wenn der kleine "schwarze" Hase - der ohnehin schon eine lange Nase hat - bellt, ist etwas komisch." Die Anführungszeichen und Gedankenstriche müssten dabei natürlich den Zeichen von oben entsprechen, können hier aber nicht dargestellt werden. Und eben diese sollen dann durch die "Standart"zeichen (", -) ersetzt werden.
Hier gehts zum Orginal Eintrag "Probleme mit preg_replace() (ersetzen von Zeichen/wörtern)" im Forum

Antworten

mist, die html-tags wurden in smilies umgewandelt. sorry. geht es so: (z.B. Anführungsstriche (unten: „ oben: “ Gedankenstriche: –)?


2.

in deinem Fall ist str_replace besser geeigent

[PHP]
$patterns[0] = "„";
$patterns[1] = "–";
$patterns[2] = "“";

$replacements[0] = """;
$replacements[1] = "-";
$replacements[2] = """;

echo str_replace($patterns, $replacements, $text);
[/PHP]


3.

mmh, das hat das Problem leider auch nicht gelöst. Kann es sein, dass es nicht funktioniert, weil die Zeichen schon falsch aus dem Formular kommen? Also, dass das Formular anstelle der Anführungszeichen unten schon ein Fragezeichen übergibt? Muss ich da vielleicht irgendwas ändern? Wenn ich einen der folgenden Tags eingebe, dann bekomme ich ein korrektes ergebnis.
Code:                   In Zwischenablage kopieren (nur IE)
2">

Wenn ich also den Text samt HTML-Tags einfüge, dann funktioniert es.

Ideen? Danke!

und ganz nebenbei: ist es sinnvoll Texte in einer Datenbank in HTML zu speichern (also z.B. die Umlaute nicht ä, ö, ü, sondern den entsprechenden HTML-Tag (nennt man das so?))


Hier gehts zum Orginal Eintrag "Probleme mit preg_replace() (ersetzen von Zeichen/wörtern)" im Forum
 
phpforum.de | Impressum