Preg_match / preg_replace

Hi jungs,

ich brauch eure Hilfe:

ich möchte meinen Usern die Möglichkeit bieten Termine in einen Kalender einzutragen. Nun hab ich das Problem das man in das input feld jede mögliche Zeichenfolge statt einem Datum eingeben kann. Nun kommt preg_match ins spiel:

$date = trim($_POST[‘date’]);

if ( (!preg_match(’/[\d]{4}+[-]+[\d]{2}+[-]+[\d]{2} (0?|1)[0-9]|2[0-3]:[0-5][0-9]$/’, $date)) ) {
$msg = “Error!”;
}

So jetzt müssen die user ein bestimmes Format einhalten, allerdings können sie vor dieses Zeichen setzen welche die Übernahme in die MySQLTabelle kaputtt machen.

Frage ist nun: Wie isolier ich mit preg_replace genau diese Zeichenfolge?

Hi, entschuldige dass ich nur eben drüber flieg aber muss gleich los

meinst du etwa ’ und "? dann nimm einfach addslashes($str)
escaped alle ’ " und \

Grüßerle

Wenn du eine genaue Zeichenfolge matchen willst, musst du ^ an den Anfang des Regex (nach dem Delimiter) setzen, und $ ans Ende (vorm Delimiter).

^ makiert, das nichts voranstehen darf, und $ das nichts nachfolgen darf.

^ für Anfang der Zeichenkette vorne und $ für’s Ende hinten hin packen.

perfekt danke das wars wohl werds glei testen :smiley:

if ( (!preg_match("/^[\d]{4}+[-]+[\d]{2}+[-]+[\d]{2} 0?|1[0-9]|2[0-3]:[0-5][0-9]+$/", $date)) ) {
$msg = “Error”;
}
so? Allerdings matched er den string auch, wenn ich nun “2009-12-05 12:03 t03t” oder “test 2009-12-05 12:03” eingebe, weil das preg_match erfüllt ist.

ich will aber das man nur den string “2009-12-05 12:03” eingebn kann

Ist doch egal ob das auch als gültig akzeptiert wird, du liest dir doch ohnehin nur die Daten raus die du brauchst, und die sind alle drinnen.

die frage war ja wie ich genau diesen string isolieren kann