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