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