kostenloser Webspace werbefrei: lima-city


Datum aus String herausfiltern

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    davy

    Kostenloser Webspace von davy

    davy hat kostenlosen Webspace.

    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.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. witze-dschungel

    witze-dschungel hat kostenlosen Webspace.

    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
  4. prinz-und-gloeckner

    prinz-und-gloeckner hat kostenlosen Webspace.

    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
  5. bruchpilotnr1

    Kostenloser Webspace von bruchpilotnr1

    bruchpilotnr1 hat kostenlosen Webspace.

    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 :lol:

    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 :thumb:

    Beitrag zuletzt geändert: 12.5.2023 3:51:12 von bruchpilotnr1
  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!