Ankündigung

Einklappen
Keine Ankündigung bisher.

Frage zu Ereg()

Einklappen

Neue Werbung 2019

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

  • Frage zu Ereg()

    Hi,

    hab irgendwie ein Teil des Codes nicht verstanden und hoffe, dass Ihr mir weiterhelfen könnt.

    Code:
    $datum = "2001-05-12";
    if(ereg ("([0-9]{1})-([0-9]{3,4})-([0-9]{1,2})",$datum, $regs)) {
      echo "$regs[3].$regs[2].$regs[1]";
    }
    else{
      echo "Ungültiges Datumsformat: $datum";
    }
    Mit dieser Zeile habe ich ein Problem :

    if(ereg ("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})",$datum, $regs))

    Warum $datum und $regs dort steht, habe ich verstanden. Was aber für mich nicht nachvollziehbar [CODE ] if(ereg ("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})",$datum, $regs)) [/Code]

    ist das hier:

    "{1}", "{3,4}","{1,2}".

    Ich hab die Zahlen verändert und je nach dem ob ich übertrieben habe oder nicht, zeigte er das Datum oder eine Fehlermeldung. Wenn ich es lösche, dann erscheint ein Fehlermeldung. Ist es zwingend? Ich verstehe nicht wozu ich die Zeile brauche. Den String Zerstückeln mache ich ja eh nicht. Oder doch? Was bedeuten denn die Minusen zwischen jeden Klammer? Trenne ich damit den zusuchenden Zeichen ab?

    Im Buch wurde es nicht gut erklärt worden, daher meine bitte um kurze Erklärung von euch. Im Forum wurde schon oft über EREG geredet, aber eine Antwort auf meine Frage fand ich nicht. Wirklich nicht.

    Vielen Dank.

  • #2
    Bin vielleicht ein wenig schief gewickelt .. aber mach aus dem

    ereg mal ein preg_match

    Fürm eine Augen sieht das nach perl-Syntax aus ... (noch Delimiter um die Ausdruck ..)

    Kommentar


    • #3
      Zitat von Guradia
      Fürm eine Augen sieht das nach perl-Syntax aus ... (noch Delimiter um die Ausdruck ..)
      Hi,

      Danke für die Antwort.

      Im Buch wird diese Funktion auch angesprochen, aber noch kurzer als bei ereg(). Ob es eine Perl-Funktion ist, weiß ich auch nicht.

      Ich habe weiter experimentiert und es funktioniert bis jetzt recht gut. Nur mir ist immer noch nicht klar was "{1}" zu bedeuten hat. Ich komme momentan ohne "{1}" zu recht. D.h. für mich, dass es ist nicht zwingend notwending "{1}" zu schreiben. Aber ein Grund muß es dennoch haben, oder? Und was hat "-" für eine Bedeutung?


      $zeichenkette="hallo welt";
      if($zeichenkette=ereg("[!§$%&/()=@]",$zeichenkette){
      echo "Fehler";
      }

      else {
      echo "alles ok!";
      }

      ^^ Diese IF-Abrage funktioniert. Aber kann ich auch Hochkommas und Anführungzeichen suchen lassen?

      Vielen Dank für die Aufmerksamkeit.

      PS was ist ein delimter ?
      PS2 Anscheinden sollte ich mir ein anderes Buch kaufen

      Kommentar


      • #4
        Zitat von BlackHorse
        Nur mir ist immer noch nicht klar was "{1}" zu bedeuten hat.
        Der davorstehende Charakter/die Klasse darf exakt 1x vorkommen (nicht 0x, nicht 2x, nicht 3x .. nur 1x)

        Kommentar


        • #5
          Kann ich denn auch Hochkommas und Anführungzeichen suchen lassen, um sie dann zu löschen?

          Z.B.

          Gur"adia

          Jetzt möchte ich nur " weg haben. Bei mir gehen die anderen, aber keine Anführungszeichen.

          Bis jetzt suche ich vergeblich, weil nirgends wird gezeigt, wie man diese Anführungszeichen loswerden kann. Vielleicht geht es garnicht.

          Gibt es keine andere Funktionen?

          Kommentar


          • #6
            Code:
            $text = "Gur\"adia";
            $text = preg_replace("/\"/", "", $text);
                echo $text;

            Kommentar


            • #7
              dafür ist preg_* überdosiert ...

              Code:
              $text = str_prelace('"', '', $text);

              Kommentar

              Lädt...
              X