(PHP 4, PHP 5)
eval — Exécute une chaîne comme un script PHP
Évalue la chaîne code_str comme un script PHP. Parmi les utilisations possibles, cette fonction permet de stocker du code dans une base de données, pour utilisation ultérieure.
Il faut bien garder en tête que le code passé à eval() doit être valide, y compris les points virgules de fin de lignes et les séquences d'échappement, sinon l'exécution se terminera. Pour mélanger des sorties HTML et du code PHP, vous pouvez utiliser une balise de fermeture de PHP pour quitter le mode PHP.
N'oubliez pas que les variables utilisées dans la fonction eval() resteront accessibles dans le script principal.
Le code à évaluer. code_str ne doit pas nécessairement contenir des balises d'ouvertures de PHP.
Une commande return terminera l'évaluation de la chaîne immédiatement.
eval() retourne NULL sauf si return est appelé dans le code évalué, auquel cas la valeur passée à return est retournée. Dans le cas d'une erreur de syntaxe dans le code évalué, eval() retourne FALSE et l'exécution du code suivant continue normalement. Il n'est pas possible d'attraper l'erreur d'analyse de la fonction eval() en utilisant la fonction set_error_handler().
Exemple #1 Exemple avec eval() - concaténation de texte
<?php
$string = 'tasse';
$name = 'café';
$str = 'Ceci est une $string avec mon $name dedans.<br />';
echo $str;
eval( "\$str = \"$str\";" );
echo $str;
?>
L'exemple ci-dessus va afficher :
Ceci est une $string avec mon $name dedans. Ceci est une tasse avec mon café dedans.
Note: Comme ceci est une structure du langage, et non pas une fonction, il n'est pas possible de l'appeler avec les variables fonctions.
Comme pour toutes les fonctions qui affichent directement des résultats au navigateur, vous pouvez utiliser les fonctions de gestion des sorties pour capturer le contenu de cette fonction et le sauver, par exemple, dans une chaîne.
Note: Dans le cas d'une erreur fatale dans le code évalué, l'ensemble du script se terminera.