theresa: string nach bestimmten zeichen durchsuchen

hallo ihr lieben!

ich bin gerade dabei eine art kalenderskirpt fertigzustellen.
in der datenbank (leider so vorgegeben) sind de datumsangaben nicht in einem standardformat gespeichert.

ich habe nun also folgende 3 fälle:
1.1.2005, 1.12.2005 oder 12.1.2005

ich brauch jeweils tag, monat und jahr als eigene variable.
ich wollt mit substr arbeiten, was mir aber aufgrund der angaben nicht möglich schein...

ich suche als nach einer möglichkeit alle werte bis zum ersten punkt und danach alle werte bis zu zweiten punkt auszulesen und in eine variable zu speichern.

entweder hab ichs überlesen (es is ja schon spät ;) ) oder es gibt
keine anwendbare funktion (was ich nicht glaube...)

danke für eure hilfe und ideen!!

theresa

  1. Hallo!

    ich habe nun also folgende 3 fälle:
    1.1.2005, 1.12.2005 oder 12.1.2005

      
    $date = 12.1.2005;  
    preg_match('/(\d+)\.(\d+)\.(\d+)/', $date, $match);  
    $day   = $match[1];  
    $month = $match[2];  
    $year  = $match[3];  
    
    

    André Laugks

    --
    Die Frau geht, die Hilti bleibt!
    1. hi!

      $date = 12.1.2005;
      preg_match('/(\d+).(\d+).(\d+)/', $date, $match);
      $day   = $match[1];
      $month = $match[2];
      $year  = $match[3];

      HAMMER!!!!
      dankeschön!!!!!!!

      theresa

      1. Moin!

        hi!

        $date = 12.1.2005;
        preg_match('/(\d+).(\d+).(\d+)/', $date, $match);
        $day   = $match[1];
        $month = $match[2];
        $year  = $match[3];

        HAMMER!!!!
        dankeschön!!!!!!!

        Nö. Hammerumständlich und langsam (preg_match ist langsam)

        $strDate = '12.1.2005';
        list($intDay,$intMonth,$intYear) = explode('.', $strDate)

        explode() erzeugt aus dem String einen Array (hier getrennt am Punkt)

        list() verteilt den Array beginnend mit dem 0. Element auf die als Parameter verwendeten

        Variablen. Genauer genommen ist es gar keine Funktion, sondern eher eine Art Methode.

        MFFG (Mit freundlich- friedfertigem Grinsen)

        fastix®

        --
        Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development
        1. Hallo!

          Nö. Hammerumständlich und langsam (preg_match ist langsam)

          Häää? Was ist da Hammerumständlich? Langsam? Zeige mir mal den Geschwindigkeitsunterschied!

          André Laugks

          --
          Die Frau geht, die Hilti bleibt!
          1. Hallo André.

            Nö. Hammerumständlich und langsam (preg_match ist langsam)

            Häää? Was ist da Hammerumständlich? Langsam? Zeige mir mal den Geschwindigkeitsunterschied!

            Siehe Marc Reichelts Benchmarkskript aus dem Archiv:

            Prozentual (1/2):  1.756667567592
            Prozentual (1/2):  1.7662185106443
            Prozentual (1/2):  1.76012934384
            Prozentual (1/2):  1.7766593246875
            Prozentual (1/2):  1.7897422125827
            Prozentual (1/2):  1.7716454520826
            Prozentual (1/2):  1.7768270465059
            Prozentual (1/2):  1.7451044622707
            Prozentual (1/2):  1.7634359288952
            Prozentual (1/2):  1.7670709627948

            Deine Methode ist also grundsätzlich langsamer.

            Einen schönen Donnerstag noch.

            Gruß, Ashura

            1. Hallo!

              Deine Methode ist also grundsätzlich langsamer.

              -> https://forum.selfhtml.org/?t=119210&m=764989

              André Laugks

              --
              Die Frau geht, die Hilti bleibt!
              1. Hallo André.

                Deine Methode ist also grundsätzlich langsamer.

                -> https://forum.selfhtml.org/?t=119210&m=764989

                Du hast nach einem Nachweis des Geschwindigkeitsunterschiedes gefragt und diesen von uns beiden wie gewünscht erhalten.

                Dass ein Mensch den Unterschied eher nicht bemerkt ändert nichts an den Tatsachen.

                Einen schönen Donnerstag noch.

                Gruß, Ashura

          2. Moin!

            Häää? Was ist da Hammerumständlich?

            Schlecht lesbarer Vierzeiler vers. schlecht lesbarer Einzeiler.

            Langsam? Zeige mir mal den Geschwindigkeitsunterschied!

              
            <?php  
            # Voreinstellungen  
              
            # Gesetzte Variablen:  
            $strDate = '12.1.2005';  
              
            # Wiederholungen pro Testdurchlauf  
            $intWiederholungen=10000;  
              
            # Anzahl Testdurchläufe:  
            $intTests=5;  
              
              
            if (isset($_SERVER['HTTP_HOST'])) {  
               $bolToHTML=true;  
            } else {  
               $bolToHTML=false;  
            }  
              
              
            # Tests:  
              
            for ($k=0; $k<$intTests; $k++) {  
              
              
              ############ Variante 1 ##################  
              $intStartTime[$k][0]=microtime();  
              for ($i=0; $i<$intWiederholungen; $i++) {  
                preg_match('/(\d+)\.(\d+)\.(\d+)/', $strDate, $match);  
                $day   = $match[1];  
                $month = $match[2];  
                $year  = $match[3];  
              } #next Wiederholung  
              $intTime[$k][0]=GetDecEndtime($intStartTime[$k][0], microtime());  
              $intSumTime[0]=$intSumTime[0]+$intTime[$k][0];  
              
              
              ############ Variante 2 ##################  
              $intStartTime[$k][1]=microtime();  
              for ($i=0; $i<$intWiederholungen; $i++) {  
                list($intDay,$intMonth,$intYear) = explode('.', $strDate);  
              }  
              $intTime[$k][1]=GetDecEndtime($intStartTime[$k][1], microtime());  
              $intSumTime[1]=$intSumTime[1]+$intTime[$k][1];  
              } # next Test ($k)  
              
              
            if ($bolToHTML) {  
            ?>  
            <html>  
            <head>  
            <title>Test</title>  
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">  
            </head>  
            <body>  
            <pre>  
            <?php  
            }  
              
            for ($k=0; $k<$intTests; $k++) {  
              echo "\nDurchlauf $k:\n";  
              echo "Variante 1: ".$intTime[$k][0]."\n";  
              echo "Variante 2: ".$intTime[$k][1]."\n";  
            }  
              
            echo "---------------------------------------\n";  
            echo "Summen:\n";  
            echo "Variante 1: ".$intSumTime[0]."\n";  
            echo "Variante 2: ".$intSumTime[1]."\n";  
            echo "---------------------------------------\n";  
            echo "Durchschnitte:\n";  
            echo "Variante 1: ".$intSumTime[0]/($intWiederholungen*$intTests)."\n";  
            echo "Variante 2: ".$intSumTime[1]/($intWiederholungen*$intTests)."\n";  
            echo "---------------------------------------\n";  
            if ($intSumTime[0] < $intSumTime[1]) {  
              echo "Ergebnis: Variante 1 ist schneller\n";  
            }  
            if ($intSumTime[1] < $intSumTime[0]) {  
              echo "Ergebnis: Variante 2 ist schneller\n";  
            }  
            if ($intSumTime[0] == $intSumTime[1]) {  
              echo "Ergebnis: Keine signifikanten Laufzeitunterschiede\n";  
            }  
            echo "...................Ende.....................\n\n";  
              
            exit;  
              
            # Funktionen:  
              
            function GetDecEndtime($strStart, $strEnde) {  
              #echo "$strStart, $strEnde\n";  
              list($intBruchteilStart, $intSekundeStart)= explode(' ', $strStart);  
              list($intBruchteilEnde,  $intSekundeEnde) = explode(' ', $strEnde);  
              $intSekunden = $intSekundeEnde    - $intSekundeStart;  
              $intBruchteil= $intBruchteilEnde  - $intBruchteilStart;  
            return $intSekunden+$intBruchteil;  
            }  
              
            if ($bolToHTML) {  
            ?>  
            </pre>  
            </body>  
            </html>  
            <?php  
            }  
            ?>  
            
            

            Ausgaben auf meinem Rechner:

            fastix@trainer:~> php -q laufzeittest.php

            Durchlauf 0:
            Variante 1: 0.066468
            Variante 2: 0.037833

            Durchlauf 1:
            Variante 1: 0.067877
            Variante 2: 0.038036

            Durchlauf 2:
            Variante 1: 0.067119
            Variante 2: 0.037485

            Durchlauf 3:
            Variante 1: 0.067762
            Variante 2: 0.038137

            Durchlauf 4:
            Variante 1: 0.068756
            Variante 2: 0.038459
            ---------------------------------------
            Summen:
            Variante 1: 0.337982
            Variante 2: 0.18995
            ---------------------------------------
            Durchschnitte:
            Variante 1: 6.75964E-06
            Variante 2: 3.799E-06
            ---------------------------------------
            Ergebnis: Variante 2 ist schneller
            ...................Ende.....................

            MFFG (Mit freundlich- friedfertigem Grinsen)

            fastix®

            --
            Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development
            1. Moin!

              Das Skript enthielt noch ein kleineres Fehlerchen. Ich habe die bereinigte Variante meines Skriptleins zur Messung von Laufzeitunterschieden jetzt unter http://www.fastix.de/test/laufzeittest.php bereitgestellt. Was mir auffällt: Auf dem gut belastetem Produktivserver fällt das Ergebnis wesentlich dramatischer aus als bei mir lokal.

              MFFG (Mit freundlich- friedfertigem Grinsen)

              fastix®

              --
              Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development
            2. Hallo!

              Schlecht lesbarer Vierzeiler vers. schlecht lesbarer Einzeiler.

              Für Dich!

              Ergebnis: Variante 2 ist schneller

              Der Mensch kann nur Temperaturdifferenzen von 4 Kelvin unterscheiden, Millisekunden schon gar nicht!

              André Laugks

              --
              Die Frau geht, die Hilti bleibt!
  2. hi,

    ich bin gerade dabei eine art kalenderskirpt fertigzustellen.
    in der datenbank (leider so vorgegeben) sind de datumsangaben nicht in einem standardformat gespeichert.

    Das dürfte gerade für einen Kalender ein ziemlicher Nachteil sein - gerade auch was Suchanfragen mit Einschränkung auf bestimmte Datümer angeht.
    Kannst oder willst du das nicht ändern? In letzterem Falle überlege dir noch mal gründlich, was letztendlich besser sein könnte.

    ich habe nun also folgende 3 fälle:
    1.1.2005, 1.12.2005 oder 12.1.2005

    ich brauch jeweils tag, monat und jahr als eigene variable.

    explode() zum Aufteilen am Punkt, ergibt ein Array mit drei Elementen.
    Wenn du wirklich einzelne Variablen willst (aber wozu) - dann noch list() darauf anwenden.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }