来自 db 的值包含 php 变量名 ('hello $name') ,如何正确显示?

从 db 我得到一个包含 php 变量名称的字符串,如 'hello $name' ,我不知道如何正确显示它:


例如:假设我有函数显示名称:


function echoName($name){    

          //call to db to get string (hello $name)

          $helloname = $row['helName'];

          echo $helloname; //lets say name = jinko it should print hello jinko

         //but it prints hello $name

         // i have tried "$helloname"; it doesn't work


}

在我的例子中,数据库包含:


Il tuo codice di prenotazione è $codicePrenotazione<br>Ricordiamo la data : $newDate

我的功能代码:


function sendEmail($cognome,$nome,$email,$codicePrenotazione,$date){


 require './dbconnection.php';

  $mail = new PHPMailer(true);

  $query = 'SELECT Azienda_Nome,Azienda_email_notifiche_smtp,Azienda_email_notifiche_utente ,Azienda_email_notifiche_pwd,Azienda_email_notifiche_porta,Azienda_email_notifiche_sicurezza ,Azienda_mex_utente FROM `aziende`';

  $stmt =$conn->query($query);

  $stmt->execute(); 

  $row = $stmt->fetch(); 


  $siteOwnersEmail = $row['Azienda_email_notifiche_utente'];

  $smtp =$row['Azienda_email_notifiche_smtp'];

  $password =$row['Azienda_email_notifiche_pwd'];

  $porta=strtolower( $row['Azienda_email_notifiche_porta']);

  $sicurezza=strtolower( $row['Azienda_email_notifiche_sicurezza']);

  $contact_message = $row['Azienda_mex_utente'];//this line contains the string 

  $nomeAzienda = $row['Azienda_Nome'];

  $conn = null;


  $newDate = date("d-m-Y H:i", strtotime($date)); 

   $name = $nome.' '.$cognome;

   $email = $email;

   $subject = 'Codice Prenotazione';


//etc etc 





}


慕容森
浏览 102回答 2
2回答

皈依舞

你最好使用类似的东西sprintf。例如,如果你的数据库中有这个:Hello, your name is %s你可以像这样格式化它:echo sprintf($row["heName"], "Test");这将输出:Hello, your name is Test如果你真的想使用 PHP 风格的变量名,一种方法是用preg_replace_callback它们各自的值替换变量:<?phpfunction format_string($string, $variables) {    return preg_replace_callback("~\\$([A-Za-z0-9-_]+)~",    function($match) use (&$variables) {        $varname = $match[1];        return $variables[$varname];    }, $string);}echo format_string("Hello \$user", /* variable table */ [    "user" => "Test"]);

12345678_0001

您可以使用评估...$name = "jinko";$helloname = "hello $name";eval("\$helloname = \"$helloname\";");echo $helloname; // prints: hello jinko警告:这可能很危险,因为 eval 会“执行”任何 PHP 代码。因此,仅当来自数据库的数据安全时才使用它。
打开App,查看更多内容
随时随地看视频慕课网APP