preg_replace code d'évaluation avec le modificateur /e

Je cherchais une alternative à la fonction eval() pour exécuter un code contenu dans une variable de type string, et a remarqué la preg_replace avec le /e modificateur.
Toutefois, le code est évalué assez bizarrement.

Par exemple, echo() conduit à une erreur dans le php 5.3.6:

<?php
$code = 'echo( \'Hello, world!\'.PHP_EOL)';
preg_replace('/(.*)/e', $code, '' );
?>

Message d'erreur:

Parse error: syntax error, unexpected T_ECHO /Users/.../test.php(4) : regexp code sur la ligne

Erreur fatale: preg_replace(): Échec de l'évaluation de code:
echo ("Bonjour, monde!".PHP_EOL) /Users/.../test.php sur la ligne 4

Tout print() œuvres, et les sorties d'un Bonjour tout le monde!:

<?php
$code = 'print( \'Hello, world!\'.PHP_EOL)';
preg_replace('/(.*)/e', $code, '' );
?>

Aussi, il semble que de plusieurs lignes de code, seul le premier est exécuté:

<?php
$t=1;
$code = '$t++;$t++;';
preg_replace('/(.*)/e', $code, '' );
echo $t;
?>

Sorties 2, pas 3.

Question: c'est le code de l'évaluation au sein PCRE dans preg_replace() documenté quelque part?
Pas trouvé sur php.net

OriginalL'auteur Serge | 2011-10-28