Re: Clean break.

From: Date: Tue, 04 Aug 2009 10:36:18 +0000
Subject: Re: Clean break.
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-296251@lists.php.net to get a copy of this message
Paul Halliday wrote: > Whats the cleanest (I have a really ugly) way to break this: > > [21/Jul/2009:00:00:47 -0300] > > into: > > date=21/jul/2009 > time=00:00:47 > > Caveats: > > 1) if the day is < 10 the beginning of the string will look like "[<space>1/... > 2) the "-0300" will differ depending on DST or TZ. I don't need it > though, it just happens to be there. > > This is what I have (it works unless day < 10): > > $theParts = split("[\"]", $theCLF); > > // IP and date/time > $tmpParts = explode(" ", $theParts[0]); > $theIP = $tmpParts[0]; > $x = explode(":", $tmpParts[3]); > $theDate = str_replace("[","", $x[0]); > $theTime = "$x[1]:$x[2]:$x[3]"; > > the full text for this part looks like: > > 10.0.0.1 - - [21/Jul/2009:00:00:47 -0300] ... more stuff here > > Anyway, any help would be appreciated. > > thanks. > unset ($STRING,$pos,$pos2,$pos3,$L,$D,$T,$pos4,$NString); $STRING="10.0.0.1 - - [21/Jul/2009:00:00:47 -0300] ... more stuff here" $pos=strpos($STRING,"["); $pos2=strpos($STRING,"]"); $L=$pos2-$pos; $NString=substr($STRING,$pos,$L); $pos3=strpos($NString,":"); $D=substr($NString,0,$pos3); $pos4=$pos3++; $T=substr($NString,$pos4,8); echo "date=$D"; echo "time=$T"; untested, but that should be pretty much all you need. HTH, Wolf

« previous php.general (#296251) next »