ho del codice php salvato in una tabella, e nel caso di variabili, non devo stampare $var ma il valore settato precedentemente nello script php
Questa è il problema che ti sei dato. Iniziamo a fare qualche considerazione sull'utilizzo di eval: eseguire il codice php che c'è nella tua tabella non è il massimo. Se l'utente ha la possibilità di inserire il proprio form, potrà eseguire arbitrariamente del codice. Ed è qualcosa di disastroso. E prima che tu dica "non è il mio caso, solo io posso aggiungere form", ti rispondo subito: non ha importanza. Magari tu non vorresti, ma per 1000 diverse ragioni (un bug nel login del pannello amministrativo, una sql injection, csrf, problemi con la configurazione di xyz, etc.) l'utente potrebbe inserire il proprio form con allegato codice php, e se succede quello che era un "problemino da poco" si trasforma in qualcosa di più grave. Inoltre è difficile da leggere, complicato da riusare altrove, e rende il debug più complesso di quanto non dovrebbe.
TL;DR: Non usare eval.
Ora che ti ho spiegato i motivi per cui non dovresti farlo, possiamo iniziare a pensare a soluzioni alternative. Le prima potrebbe essere quella dei placeholder:
codice:
$row['variabile'] = '<input type="text" name="variabile" value="$var"></input>';
$var = $_POST['valore_postato'];
$data = array(
'$var' => $var
);
echo strtr($row['variabile'], $data);
In questo caso puoi anche evitare di usare $var nella stringa, ma, ad esempio, chiamarla {{var}}
codice:
$row['variabile'] = '<input type="text" name="variabile" value="{{var}}">';
così
codice:
$data = array(
'{{var}}' => $_POST['valore_postato'];
);
echo strtr($row['variabile'], $data);
Se c'è altro di cui tenere conto, scrivilo e penseremo alle appropriate soluzioni. Ma prima di farlo, scrivi cosa hai provato.