1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

PHP: grep, preg

    • Frage
  • maciek
  • 12. März 2004 um 16:00
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • maciek
    Punkte
    2.805
    Beiträge
    434
    • 12. März 2004 um 16:00
    • #1

    also irgendwie steh ich bei den grep bzw. preg Funktionen von PHP bissi an. Vielleicht kann mir jemand auf die Beine helfen:

    Ich habe z.B. die Sätze "Das heutige Datum ist 12.03.2003." und "Das morgige Datum ist 13.03.2003.". Ich weiß jetzt daß die Sätze von der Form "... Datum." sind. Wie schaffe ich es nun aus den Sätzen das Datum herauszuholen (und zwar nur das Datum), sodaß ich nachher in einem String dieses stehen habe.

    D.h.
    $datum = preg_???(...);
    -> $datum = "12.03.2003" bzw. "13.03.2003".

    oder anders ausgedrückt:
    Ich möchte nach einem Substring einer bestimmten Form in einem anderen String suchen, allerdings nicht den String als Ergebnis (so wie ihn preg_match() zurückliefert so weit ich das richtig verstehe), sondern den Substring als Ergebnis zurückbekommen.

    Ich hoffe, ich drücke mich halbwegs verständlich aus.

  • lj_scampo
    Punkte
    557
    Beiträge
    110
    • 12. März 2004 um 16:07
    • #2

    ich wuerde als erstes ein explode nach leerzeichen machen und danach fuer jedes ergebnis (ist ein array) entweder
    a) mittels preg_match auf datumsform durchsuchen oder
    b) wiederum ein explode nach punkt mit ueberpruefung ob dann das ergebnis 3 array-elemente mit zahlen von entsprechenden werten sind

  • maciek
    Punkte
    2.805
    Beiträge
    434
    • 12. März 2004 um 16:55
    • #3

    erm ... ok. Das mit dem Datum war aber nur ein einfaches BSP zur Verdeutlichung. Das ist eigentlich nicht das wirkliche Ziel. Ich möchte auch nach beliebiegen, komplizierteren Ausdrücken suchen können.

  • ubu_roi
    Punkte
    46
    Beiträge
    8
    • 12. März 2004 um 19:07
    • #4
    Zitat von maciek

    also irgendwie steh ich bei den grep bzw. preg Funktionen von PHP bissi an. Vielleicht kann mir jemand auf die Beine helfen:

    Ich habe z.B. die Sätze "Das heutige Datum ist 12.03.2003." und "Das morgige Datum ist 13.03.2003.". Ich weiß jetzt daß die Sätze von der Form "... Datum." sind. Wie schaffe ich es nun aus den Sätzen das Datum herauszuholen (und zwar nur das Datum), sodaß ich nachher in einem String dieses stehen habe.

    D.h.
    $datum = preg_???(...);
    -> $datum = "12.03.2003" bzw. "13.03.2003".

    oder anders ausgedrückt:
    Ich möchte nach einem Substring einer bestimmten Form in einem anderen String suchen, allerdings nicht den String als Ergebnis (so wie ihn preg_match() zurückliefert so weit ich das richtig verstehe), sondern den Substring als Ergebnis zurückbekommen.

    Ich hoffe, ich drücke mich halbwegs verständlich aus.

    Als aller erstes wuerde ich den teil ``Pattern syntax'' im Teil ``Regular expressions perl compatible'' lesen.

    Hier ein paar beispiele, die das halbwags erlautern konnten ...

    ------------------------

    Um die daten aus einem string zu bekommen tuest du

    preg_match_all("/\\d{2}\\.\\d{2}\\.\\d{4}/", $derString, $a, PREG_SET_ORDER);

    das pattern beschreibt zahlx2.zahlx2.zahlx4

    und nun ausgabe der matches

    foreach ($a as $match) echo $match[0].\n"; //$match[0] ... enthalt das gematchde datum


    -----------

    Ein weiteres beispiel

    preg_match_all("/(\\d{2})\\.(\\d{2})\\.(\\d{4})/", $derString, $a, PREG_SET_ORDER);

    foreach ($a as $match) echo "datum ist $match[0]; tag: $match[1]; monat: $match[2]; yahr: $match[3];";

    $a ist ein array von matches; $a[0] ist der erste match; $a[0][0] enthalt den string der matcht; $a[0][1] das erste subpattern (=das in den ersten klammern)

    -----------

    Ist EIN datum im string ??

    if (preg_match("/\\d{2}\\.\\d{2}\\.\\d{4}/", $theString, $a)) echo "yowohl";

    $a[0] ... "19.02.2003"
    $a[1] ... "19"
    $a[2] ... "02"
    $a[3] ... "2003"

    ----------

    Ist ganzer string datum ??

    if (preg_match("/^\\d{2}\\.\\d{2}\\.\\d{4}\$/", $theString)) echo "yowohl";

    dach .... anfang vom string, dollar ... ende vom string , d.h. ganzer string= anfang, datum, ende.

    Peter

  • maciek
    Punkte
    2.805
    Beiträge
    434
    • 13. März 2004 um 00:04
    • #5

    danke. preg_match_all() ist die Funktion, die ich gesucht hab und nicht finden konnte ... die regular expressions krieg ich schon hin.

  • Maximilian Rupp 27. Dezember 2024 um 12:06

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

  1. Datenschutzerklärung
  2. Impressum