Avatar billede weeelo Nybegynder
09. juni 2008 - 17:22 Der er 4 kommentarer og
1 løsning

Preg_replace datetime til rfc822

Hejsa,

Jeg har en lang string indeholdende et rss-feed, men datoerne er forkerte. I rss skal man bruge RFC822 og derfor skal jeg have konverteret mine datoer. Det har jeg prøvet at gøre med følgende preg_replace:

$contents = preg_replace("/(\d+)\-(\d+)\-(\d+) (\d+)\:(\d+)\:(\d+)/", date('r', strtotime('$1-$2-$3 $4:$5:$6')), $contents);

Den tager en dato (f.eks. 2008-06-09 17:30:00) og bør lave den om til RFC822, men det fungerer ikke. Den skriver den 1. januar 1970. Fjerner jeg RFC822-konverteringen, sådan her:

$contents = preg_replace("/(\d+)\-(\d+)\-(\d+) (\d+)\:(\d+)\:(\d+)/", '$1-$2-$3 $4:$5:$6', $contents);

Så skriver den datoerne som de også så ud inden.

Er der nogen der kan se hvor jeg går galt i byen?

Mvh Weeelo
Avatar billede nielle Nybegynder
09. juni 2008 - 20:43 #1
Du kan ikke kalde date() og strtotime() på den måde i en preg_replace(). Til det formål skal du bruge preg_replace_callback() i stedet:

http://dk.php.net/manual/en/function.preg-replace-callback.php

Forresten skal du ikkee escape de der '-' og ':' på den måde i dit mønster.
Avatar billede coderdk Praktikant
10. juni 2008 - 02:10 #2
RFC822 er en forældet RFC om internet message format... Mener du RFC2822?
http://asg.web.cmu.edu/rfc/rfc2822.html#sec-3.3

Men hvorfor så besværligt?

$dato = '2008-06-09 17:30:00';
$rfc2822 = date( "r", strtotime( $dato ) );
Avatar billede weeelo Nybegynder
10. juni 2008 - 03:17 #3
nielle > Den er lige i skabet. Smid et svar, så får du dine point.
Avatar billede nielle Nybegynder
10. juni 2008 - 06:03 #4
Svar :^)
Avatar billede nielle Nybegynder
10. juni 2008 - 06:32 #5
Forresten kan du klare dig med dette mere specifikke mønster:

\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}

- og så bare replace med:

date('r', strtotime("$0"))
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester