EisFuX: PCRE-Modifikator "e"

Beitrag lesen

Hallo,

wieso funktioniert sowas nicht:

function weekday($month, $day)
{
   return date("d m Y", mktime(0,0,0,$month,$day,date("Y"));
}

$html_text = preg_replace("/(([0-9]{2}).([0-9]{2}).)/", "\1  ".weekday("\3","\2"), $html_text);

Um im Ersetzungsstring von preg_replace() PHP-Code ausführen zu können, musst du den Modifikator "e" benutzen:

http://de.php.net/manual/de/function.preg-replace.php#AEN119702

  
$html_text = '12.31.';  
  
function weekday(  
$month, $day  
) {  
  return(  
   date('d m Y', mktime(0,0,0,$month,$day,date("Y") ) )  
  );  
}  
  
$html_text = preg_replace('/(([0-9]{2})\.([0-9]{2})\.)/e', '"$1".weekday("$3","$2")', $html_text);  
  
printf("Das kommt raus: (%s)<br />", $html_text);  

Mit "back references" hat das aber nichts zu tun ... ;-)

MffNG
EisFuX

--
Erinnert mich ein Bisschen an die if-then-Schleifen von Java.
(Alexandra Freund, IT-Compactkurs)