Regex für pubDate gesucht
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
april
array
august
ausgabe
code
date
deutschen monats
dezember
februar
januar
juni
mai
mischung
november
oktober
platzhalter
september
treffen
umwandeln
url
-
Moin,
ich suche einen Regex, der folgendes kann:
Mon, 06 Feb 2012 20:44:43 GMT
umwandeln in
06 Februar 2012, 20:44
Ich weiß, dass es Funktionen gibt, um das ohne Regex um zu wandeln. Das hilft mir aber nicht :D -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hey, ich gebe dir nen Hilfsmittel an die Hand:
http://regexp-evaluator.de/evaluator/
Damit wirst du es selber schaffen, wenn du es schon nicht auf die einfache Methode machen willst/kannst. -
Hallo
ich würde es umwandeln in Timestamp und dann zurück zu gewünschtes Datum-Format
$startdatum = 'Mon, 06 Feb 2012 20:44:43 GMT'; $temp_time = strtotime($startdatum); $neudatum1 = date('d. # Y, H:i',$temp_time); $monate_deu = array('Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'July', 'August', 'September', 'November', 'Dezember'); $monat_id = ( date('n',$temp_time) - 1 ); $de_monat = $monate_deu[$monat_id]; $neudatum2 = str_replace('#',$de_monat,$neudatum1); echo "<br />".$startdatum."\n"; echo "<br />".$neudatum1."\n"; echo "<br />".$neudatum2."\n";
die Umlaute in den deutschen Monats-Namen Array evtl. richtig codiert erstellen (utf-8)
Das Zeichen # dient als Platzhalter für den später eingefügten deutschen Monats-Name
Ausgabe
Mon, 06 Feb 2012 20:44:43 GMT 06. # 2012, 15:44 06. Februar 2012, 15:44
... hä ?!? .. aber warum stimmt so die Uhrzeit nicht ?!?!
EDIT ... weil mein Webspace andere Zeitzone beim Test hatte
mit folgender Zeile oben im Code
date_default_timezone_set('Europe/Berlin');
ist dann die Ausgabe
Mon, 06 Feb 2012 20:44:43 GMT 06. # 2012, 21:44 06. Februar 2012, 21:44
besser :)
Beitrag zuletzt geändert: 19.2.2012 10:52:20 von twichi -
Ausschließlich REGEX (und etwas PHP):
Wenn du genau schaust fallen dir auskommentierte<?php header('Content-Type: text/plain'); $time = 'xxx Mon, 06 Feb 2012 20:44:43 GMT xxx'; //$time = 'Mon, 06 Feb 2012 20:44:43 GMT'; // VARIANTE 1 //$pattern = '/^([a-zA-Z]*), ([0-9]*) ([a-zA-Z]*) ([0-9]*) ([0-9]*):([0-9]*):([0-9]*) ([A-Z]*)$/'; $pattern = '/([a-zA-Z]{3}), ([0-9]{2}) ([a-zA-Z]{3}) ([0-9]{4}) ([0-9]{2}):([0-9]{2}):([0-9]{2}) ([^ ]*)/'; $replace = '$2 $3 $4, $5:$6'; $result = preg_replace($pattern, $replace, $time); echo("'$time' => '$result'\n"); // VARIANTE 2 //$pattern = '/^([a-zA-Z]*), ([0-9]*) ([a-zA-Z]*) ([0-9]*) ([0-9]*):([0-9]*):([0-9]*) ([A-Z]*)$/e'; $pattern = '/([a-zA-Z]{3}), ([0-9]{2}) ([a-zA-Z]{3}) ([0-9]{4}) ([0-9]{2}):([0-9]{2}):([0-9]{2}) ([^ ]*)/e'; $replace = 'doreplace(stripslashes(\'$2\'), stripslashes(\'$3\'), stripslashes(\'$4\'), stripslashes(\'$5\').\':\'.stripslashes(\'$6\'))'; function doreplace($day, $month, $year, $time) { $months = array( 'Jan' => 'Januar', 'Feb' => 'Februar', 'Mar' => 'März', 'Apr' => 'April', 'May' => 'Mai', 'Jun' => 'Juni', 'Jul' => 'July', 'Aug' => 'August', 'Sep' => 'September', 'Oct' => 'Oktober', 'Nov' => 'November', 'Dec' => 'Dezember' ); return "$day {$months[$month]} $year, $time"; } $result = preg_replace($pattern, $replace, $time); echo("'$time' => '$result'"); ?>
-Variablen auf. Diese treffen jeweils NUR auf die auskommentierte$pattern
-Variable. Die nicht-auskommentierten Patterns treffen in einem beliebigen String jeweils den Zeit-Teil (Beispiel:$time
-Variable).$time
Ich habe das auf 2 Varianten gelöst.
1) ausschließlich REGEX: dabei wird aber
zuMon, 06 Feb 2012 20:44:43 GMT
.06 Feb 2012, 20:44
2) Mischung aus REGEX und PHP: dabei werden die Monatsnamen auch übersetzt.
Beitrag zuletzt geändert: 19.2.2012 12:22:15 von hackyourlife -
Danke, mal schauen, in wie weit ich damit arbeiten kann :)
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage