Olá pessoal,

Vou colocar aqui uma dica relacionada a uma situação que me ocorreu.
Estava eu desenvolvendo um programa em PHP que calculasse o método de Newton-Raphson de acordo com a função passada pelo usuário.
O programa requeria os seguintes dados:
   - Uma função no formato 2*x+pow(x,3) (por exemplo);
   - O valor de x para esta função;
   - Outros valores não pertinentes a este artigo.

O meu problema era: como vou colocar o valor de x na função, de modo que a linguagem me retorne o resultado da soma ao invés de uma string?

Para resolver este problema é muito simples, no entanto, ralei um pouco para descobrir por não saber o nome do comando.

A solução é: eval()

Caso você tente substituir os valores de x na função, pelo valor passado pelo usuário, sem usar eval, o cálculo não será feito, e sim, será retornado uma string.
Vamos a um exemplo prático.

<?php
// $x é o valor a ser substituído na função. Vamos supor que $x = 3
function equacao($x) {
        
        $f = "";
        $new_f = "2*x+pow(x,3)";
        
        // Procura por X, e quando encontra, substitui pelo valor $x na função, 
        // no caso deste exemplo, $x vale 3
        for($i = 0; $i < strlen($new_f); $i++) {
            if($new_f{$i} == "x" || $new_f{$i} == "X") {
                $f = substr($new_f, 0, $i);
                $f .= $x;
                $f .= substr($new_f, $i+1);
                $new_f = $f;
            }
        }
        
        // Depois de substituido, a função está assim: 2*$x+pow($x,3)
        // A idéia é que seja calculado, 2*3+pow(3,3) = 33 
        eval("\$f = " . $f . ";");  
    
        // Retorna o resultado do calculo. 
        // Sem a utilização de eval, seria retornado: 2*$x+pow($x,3)
        return $f;    
    } 
?>

É isso aí pessoal, espero que seja útil a alguém isso.
:-)