Salve a tutti,
ho la necessità di mandare delle email alla fine di un processo, il template è salvato all'interno di un database interamente in html con le variabili da sostituire all'interno delle parentesi graffe {var}.
Nella pagina in cui devo inviare l'email prelevo il codice html dal db, tramite la funzione preg_replace sostituisco le parentesi graffe con $, e in fine con eval valuto la stringa.

Un po di codice:

Codice PHP:
//Tutte le variabili da sostituire
$var1'testo';
$var2'testo';
$var3'testo';
$var4'testo';
$var5'testo';

$email_template mysqli_query($conn"SELECT * FROM email_template WHERE email_type = 'nuova_prenotazione'");
$email_Data  mysqli_fetch_array($email_template);

$oggetto $email_Data['email_subject'];
$messaggio $email_Data['email_message'];

$pattern '/{(\w+)}/i';$replacement "$$1";
$str preg_replace($pattern$replacement$messaggio);

eval(
"\$str = \"$str\";");

echo 
$str
Questo codice mi stampa tutto il messaggio html, con le parentesi graffe sostituite ma con le variabili che rimangono variabili, quindi eval non fa il suo dovere.

Da considerare il fatto che un normalissimo testo al posto del messaggio prelevato dal db funziona correttamente.

Grazie anticipatamente!