preg_replace funktioniert in function nicht

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • preg_replace funktioniert in function nicht

    Hallo,
    ich möchte folgendes ersetzen:

    PHP-Code:
    function month_validate($month){
    $suchmuster[0] = '/1/';
    $suchmuster[1] = '/2/';
    $suchmuster[2] = '/3/';
    $suchmuster[3] = '/4/';
    $suchmuster[4] = '/5/';
    $suchmuster[5] = '/6/';
    $suchmuster[6] = '/7/';
    $suchmuster[7] = '/8/';
    $suchmuster[8] = '/9/';
    $suchmuster[9] = '/10/';
    $suchmuster[10] = '/11/';
    $suchmuster[11] = '/12/';

    $ersetzungen[0] = 'Januar';
    $ersetzungen[1] = 'Februar';
    $ersetzungen[2] = 'März';
    $ersetzungen[3] = 'April';
    $ersetzungen[4] = 'Mai';
    $ersetzungen[5] = 'Juni';
    $ersetzungen[6] = 'Juli';
    $ersetzungen[7] = 'August';
    $ersetzungen[8] = 'September';
    $ersetzungen[9] = 'Oktober';
    $ersetzungen[10] = 'November';
    $ersetzungen[11] = 'Dezember';

    preg_replace($suchmuster$ersetzungen$month);

    wenn ich jetzt....
    PHP-Code:
    echo month_validate("2"
    ....dann wird gar nichts ausgegeben. Es sollte aber "Februar" ausgegeben werden. Wisst ihr warum das so ist?
    Zuletzt geändert von lightdisc; 01.04.2007, 16:55.

  • #2
    fehlt deiner funktion nicht ein rückgabebefehl?

    Kommentar


    • #3
      Re: preg_replace funktioniert in function nicht

      Original geschrieben von lightdisc
      Wisst ihr warum das so ist?
      Weil du immer noch nicht weisst, was Rückgabewerte von Funktionen sind, und was man mit denen macht ...?
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        RETURN $VARIABLE;
        WHILE (!$asleep) { $sheep++; }

        Kommentar


        • #5
          warum eigentlich preg_replace und nicht str_replace?

          Kommentar


          • #6
            Und warum eine solche Funktion, wo alles immer neu definiert wird? Das ist doch ein riesiger Performanceverlust.

            Kommentar


            • #7
              Original geschrieben von jmc
              ... ein riesiger Performanceverlust.
              riesig? könntest du das evtl. ausführen?

              Kommentar


              • #8
                Je nach dem wieviel Male man die tut... in seinem Fall ist es vieleicht nicht so schlimm, aber wenn man das sehr oft durchführt müssen bei jedem Durchlauf die Arays neu erstellt werden statt nur abgerufen. Darauf folgt ein ziemlich hoher Performanceverlust wenn man grosse Prejekte programmiert.

                Kommentar


                • #9
                  Ich würde schätzen, dass es schneller ist wenn man das Datum zuerst in einen Timestamp umwandelt (soweit möglich) und dann die lokalisierten Funktionen verwendet.
                  Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

                  Kommentar


                  • #10
                    jmc, das sind zwar richtige überlegungen, aber immer noch spekulationen. so wie ich die besucher dieses forums kenne, entwickelt er mit viel höherer wahrscheinlichkeit irgend ein news-system für eine private webseite, eine cd-verwaltung oder einen firmen-internen kalender. von hohen auslastungen kann da nicht die rede sein, deswegen fand ich deinen vorwurf von einem "riesigen performanceverlust" etwas überstürzt.

                    Kommentar


                    • #11
                      Ja, du hast schon recht... Ich bin wohl momentan ein bisschen zu sehr von einem aktuellen Projekt mit Mikroprozessoren für Sender und Empfänger beschäftigt... Da zählt beinahe jedes zu besetzende Byte
                      Bei einem Webserver mit heutigen Leistungen wird dies natürlich nicht so viel ausmachen...

                      Kommentar


                      • #12
                        Original geschrieben von tontechniker
                        Ich würde schätzen, dass es schneller ist wenn man das Datum zuerst in einen Timestamp umwandelt (soweit möglich) und dann die lokalisierten Funktionen verwendet.
                        man könnte auch ein Array machen mit den Monatszahlen als keys und den Monatsnamen als values und dann mit in_array (?) prüfen.

                        Kommentar


                        • #13
                          fast richtig. das nennt man "lookup table" und wird oft bei zeitkritischen anwendungen eingesetzt:
                          PHP-Code:
                          $monate = array(1=>"jan"2=>"feb"3=>"mar", ...); 

                          echo 
                          $monate[$user_eingabe]; 

                          Kommentar


                          • #14
                            fast richtig. das nennt man "lookup table" und wird oft bei zeitkritischen anwendungen eingesetzt:
                            womit man auch gleich eine Validierung mit einbaut ... Auf jeden Fall besser als preg_replace - Ob es ingesamt schneller ist ein solches Array in einer Klasse einmalig als private Variable zu definieren darüber kann man streiten.
                            Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

                            Kommentar


                            • #15
                              Original geschrieben von penizillin
                              fast richtig. das nennt man "lookup table" und wird oft bei zeitkritischen anwendungen eingesetzt:
                              PHP-Code:
                              $monate = array(1=>"jan"2=>"feb"3=>"mar", ...); 

                              echo 
                              $monate[$user_eingabe]; 
                              da fehlt aber die Validierung ob der key überhaupt vorkommt.

                              Kommentar

                              Lädt...
                              X