Datum mit preg_replace durch Text ersetzen

shorty

Erfahrenes Mitglied
Hi,
ich wollte mal fragen, ob es ne Möglichkeit gibt, ein Datum mit Hilfe von preg_replace() durch einen bestimmten Text zu ersetzen?

Bsp.: 1.12.2003 soll durch "Datum" oder irgendeinen anderen Text ersetzt werden.

Könnte mir jemand dazu vielleicht einen Link zur "Definition" von preg_replace() geben?

Danke schonmal im Vorraus.

Mfg Shorty

edit:
habe mal versucht, das selber zu machen und zwar mit diesem Code hier:

PHP:
$post['message']=preg_replace("/([0-9]{1,2})+(.)+([0-9]{1,2})+(.)+([0-9]{1,4})/", "Datum", $post['message']);

Allerdings wird dann, wenn unter dem Datum noch ein Text steht, der ganze Text mit durch das Wort "Datum" ersetzt. Ich weiss nicht mehr, wie ich das sonst noch anstellen soll, so dass nur das Datum ersetzt wird :(. Hat keiner ne Idee?
 
Zuletzt bearbeitet:
Könntest du bspw. so machen...
PHP:
<?php
function isDate($date)
{
$parts=explode('.',$date);
$months=array(0,31,29,31,30,31,30,31,31,30,31,30,31);
$dd=(int)$parts[0];$mm=(int)$parts[1];$yyyy=(int)$parts[2];
if(!$dd||!$mm||!$yyyy){return $date;}
if(@mktime(0,0,0,$mm,$dd,$yyyy)<1){return $date;}
if($dd>$months[$mm]){return $date;}
if($mm==2&&$dd==29){
if($yyyy%4){return $date;}
if(!$yyyy%100&&$yyyy%400){return $date;}
}return '[Datum]';
}
$txt=preg_replace("/(\D?)(\d?\d\.\d?\d\.\d{4})(\D?)/e","'\\1'.isDate('\\2').'\\3'",$txt);echo $txt;
?>
...der Ausdruck sucht erstmal nach Zeichenketten in $txt, welche dem Muster entsprechen. Findet er eine, wird noch überprüft, ob es ein gültiges Datum ist (wäre ja denkbar, dass eine andere Zeickenkette,bspw. ne IP-Adresse, dem Muster entspricht)... wenn ja, wird der String durch [Datum] ersetzt.

Infos zu preg_replace() findest du im im PHP-Handbuch auf http://www.php.net(bin zu faul, den genauen Link herauszusuchen :-)) ...
Weiteres zu regulären Ausdrucken gibts z.B. bei SelfHTML
 
Zurück