Datum aus String herausfiltern
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
-
Hi zusammen,
ich habe eine kleine Frage an euch.
Ich habe Strings, die haben folgendes Format:
20220201_blabla
20230101_blablabla
20230201_bla
Also es steht immer vorne das Datum im englischen Format, dann nach einem _ der Name.
Jetzt möchte ich diese beiden Daten filtern. Also ich hätte gerne das Datum, das will ich dann mit strtotime() in einen Timestamp umwandeln, und den Namen möchte ich gerne in meine Datenbank speichern.
Wie mache ich das am besten? Welche Funktionen kann ich für sowas benutzen?
Danke für eure Hilfe. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Mit explode auf "_" kriegst du einen Array. Aus diesem kannst du den Namen und das Datum getrennt auslesen.
Beitrag zuletzt geändert: 27.3.2023 19:20:03 von witze-dschungel -
Das ist so ohne Trennzeichen wohl kein übliches Format für Zeitangaben.
Wenn die Anordnung sowie die Bedeutung der Ziffern aber immer gleich sind, kann man da einfach mit PHP substr extrahieren und in Variablen schreiben, was man braucht.
https://www.php.net/manual/de/function.substr.php
Ansonsten wird man aus der vorderen Ziffernfolge mit dem Füllhorn der Datumsfunktionen etwas basteln müssen:
https://www.php.net/manual/de/datetime.format.php
https://www.php.net/manual/de/ref.datetime.php -
davy schrieb:
Hi zusammen,
ich habe eine kleine Frage an euch.
Ich habe Strings, die haben folgendes Format:
20220201_blabla
20230101_blablabla
20230201_bla
Also es steht immer vorne das Datum im englischen Format, dann nach einem _ der Name.
Jetzt möchte ich diese beiden Daten filtern. Also ich hätte gerne das Datum, das will ich dann mit strtotime() in einen Timestamp umwandeln, und den Namen möchte ich gerne in meine Datenbank speichern.
Wie mache ich das am besten? Welche Funktionen kann ich für sowas benutzen?
Danke für eure Hilfe.
Also ich würde Um die Daten zu filtern und das Datum in einen Timestamp umzuwandeln sowie den Namen zu extrahieren die reguläre Ausdrücke (Regex) verwenden. In PHP kannst du die Funktionen preg_match() und strtotime() dafür einsetzen.
Hier ist ein Beispiel, wie du vorgehen kannst:
$string = "20220201_XXXXX"; $pattern = "/^(\d{8})_(\w+)/"; // Regex-Muster für das Datum und den Namen if (preg_match($pattern, $string, $matches)) { $dateString = $matches[1]; // Datum aus dem ersten Regex-Capturing-Group extrahieren $name = $matches[2]; // Namen aus dem zweiten Regex-Capturing-Group extrahieren $timestamp = strtotime($dateString); // Datum in einen Timestamp umwandeln echo "Datum: " . date("Y-m-d", $timestamp) . "\n"; echo "Name: " . $name . "\n"; } else { echo "Ungültiges Format!\n"; }
Dieses Beispiel nimmt an, dass das Datum immer aus 8 Ziffern besteht und der Name aus alphanumerischen Zeichen. Das Regex-Muster ^(\d{8})_(\w+) sucht nach einem 8-stelligen Datum am Anfang des Strings, gefolgt von einem Unterstrich und dem Namen. Ich hoffe, ich habe es verständlich erklärt
Die Funktion preg_match() versucht, das Regex-Muster auf den String anzuwenden und die Ergebnisse in das Array $matches zu speichern. Wenn ein Treffer gefunden wird, kannst du auf die extrahierten Daten über $matches[1] und $matches[2] zugreifen.
Anschließend kannst du strtotime() verwenden, um den Datumsteil in einen Timestamp umzuwandeln. Du kannst dann den Timestamp mit date() formatieren, um das Datum in einem gewünschten Format anzuzeigen. Das sollte dann kein Problem mehr darstellen.
Ich möchte noch erwähnen, dass dieses Beispiel nur für einen einzelnen String funktioniert. Wenn du eine Liste von solchen Strings hast, musst du die Extraktion in einer Schleife für jeden String durchführen oder in Gruppen abändern. Mein vorgänger beschrieb es schon sehr gut:
prinz-und-gloeckner schrieb:
Ansonsten wird man aus der vorderen Ziffernfolge mit dem Füllhorn der Datumsfunktionen etwas basteln müssen:
https://www.php.net/manual/de/datetime.format.php
https://www.php.net/manual/de/ref.datetime.php
Mit freundlichen Grüßen
Beitrag zuletzt geändert: 12.5.2023 3:51:12 von bruchpilotnr1 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage