• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Reguläre Ausdrücke

Mathmos

Neues Mitglied
Moin Moin,

ich habe eben schon etwas in der Suche gestöbert, aber leider nichts brauchbares finden können.
Aber ihr könnt mir sicher helfen =)

Und zwar, versuche ich eine Eingabe zu überprüfen in der nur folgende Dinge erlaubt sind:
Zahlen: 0-9
Buchstaben: a-z, A-Z
Umlaute äöü, ÄÖÜ , ß
Untersriche

Mein Problem sind die Leerzeichen, da habe ich keine Ahnung, wie ich diese verbieten kann.
Zuerst hatte die Abfrage mit \w gemacht, allerdings wurden da die Umlaute und das ß als fasche Eingabe abgestempelt.

PHP:
elseif(!preg_match("/^[A-Za-zäöüßÄÖÜ0-9_]+$/", trim($_POST["categoryname"])))
                $errors[]= "Benutze bitte nur alphanumerische Zeichen (Zahlen, Buchstaben und den Unterstrich).";

Grüße
 
Moin,

ich löse jetzt das Leerzeichenproblem indem ich einfach die Leerzeichen vorher mit str_replace in Unterstriche wandel.
Und bei der Ausgabe werden die Unterschriche wieder in Leerzeichen gewandelt.

Allerdings habe ich nun ein ganz anders Problen.
Wenn ich nun Umlaute eingebe und sie an die Datenbank schicken, stehen in der Datenbank nur Hieroglyphen ala "ö" anstelle eines ö's.
Nun lese ich den Eintrag wieder aus und lasse in ausgeben und im Browser steht es dann wieder in Klartext.

Die betreffenden Spalten in der Datenbank haben alle die Kollation "utf8_general_ci".
Und in der index.php lautet der metatag
HTML:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Grüße
 
Ist denn auch die Datei selbst mit utf8 als Zeichensatz gespeichert? Kann es sein, dass im HTTP-Header ein anderer Content-type steht (der würde die HTML-Angabe überschreiben)?
 
Alle Dateien sind mit uft-8 ohne BOM kodiert.
PHP:
header('content-type: text/html; charset=utf-8');
Hab ich nun auch hinzugefügt.
Funktionieren tut es aber leider nicht.

Nun habe ich mir mal Live HTTP headers installiert und dort steht :
Code:
Content-Type: text/html; charset=iso-8859-1
Ich kann mir aber nicht erklären wieso...

Grüße
 
Vermutlich überschreibt dein Webserver die von dir angegebene Zeichensatzangabe im HTTP-Header. Das könnte man evtl. durch einen Eintrag in einer .htaccess-Datei unterdrücken oder ändern. Aber genau das wird auch die Ursache sein.
 
Zurück
Oben