phpbar.de logo

Mailinglisten-Archive

[php] Datumstring anhand Format parsen

[php] Datumstring anhand Format parsen

Yannik Hampe yannikh at gmail.com
Die Okt 17 19:49:11 CEST 2006


Ralf Eggert wrote:
> Hallo,
> 
> irgendwie habe ich gerade eine kleine Denkblockade, vielleicht kann mir
> ja jemand auf die Spr�nge helfen.
> 
> Ich habe einen String und ein Datumsformat und m�chte den String anhand
> des Datumsformat "parsen", d.h. in seine Bestandteile zerlegen, um
> danach per checkdate() zu pr�fen, ob es sich dabei um ein g�ltiges Datum
> handelt.
> 
> Das Format soll frei angegeben werden k�nnen, solange es den m�glichen
> Parametern von date() entspricht. Wobei es generell nur um Tage, Monate
> und Jahre gehen soll.
> 
> Beispiel 1:
> String: 17.10.2006
> Format: %d.%m.%Y
> 
> Beispiel 2:
> String: 2006-10-17
> Format: %Y-%m-%d
> 
> Beispiel 3:
> String: 17/10/2006
> Format: %d/%m/%Y
> 
>[..]
> 
> Hat jemand eine Idee?
Jo, das sollte dir helfen:
http://de.php.net/manual/de/function.strptime.php
zur Not mit regexen, aber das ist die langsamere M�glichkeit...
Wobei du immernoch wissen musst, wie das Format aussieht... Wenn du
versucht willst, das Format komplett selbst zu erkennen sind regexe wohl
besser:
/\(d+)(\D+(\d+))*/
ungetestet, aber vom Prinzip her kannst du so alle Zahlen, die durch
nicht-zahlen in einem String von einander trennt in einen Array laden
(mit preg_match()).
Dann kannst du pr�ften, ob Beispielsweise die erste Zahl ein g�ltiges
Jahr ist und dann versuchen nach %Y %m %d aufzul�sen usw.
Du kannst nat�rlich auch den Seperator noch festlegen und rausholen:
/\(d+)((\D+)(\d+))?(\3(\d+))*/
Also das regex ist jetzt mal echt nur noch vom Prinzip her g�ltig ;-).
Das m�sstest du dir noch zurechtpfeilen... Aber vom Prinzip her k�nntest
du dir so auch noch den Trenner mit rausholen und dann an einem . ein
deutsches Format erkennen und an einem / ein amerikanisches usw.
Wenn du kein regexfan bist, kannst du nat�rlich auch einfach mit einer
Schleife den String Zeichenweise durchgehen und analysieren... Das ist
vielleicht einfacher, wenn auch nicht performanter.
> 
> Gru�,
> 
> Ralf

Yannik
> 
> --
> Ralfs PHP Blog
> Wissenswertes �ber PHP, das Zend Framework und anderes Ged�ns
> http://www.ralfeggert.de/
> 

php::bar PHP Wiki   -   Listenarchive