PHP 不会神奇地检查每个字符串是否包含可以执行的代码。如果您在数据库中的字符串实际包含Hi {$email} , bla bla bla
,那么 PHP 将保持原样。
因此,您需要手动覆盖字符串中的值以匹配实际值。最安全的方法是简单的str_replace
<?php
$string = 'Hi {$email} , bla bla bla';
$email = 'foo@example.com';
$output = str_replace('{$email}', $email, $string);
$output = str_replace('{$username}', $username, $output );
echo $output;
//Hi foo@example.com , bla bla bla
?>
或在您的代码中
<?php
some function (){
$text = $this->Some_model->get_string();
$email = 'foo@mail.com';
echo str_replace('{$username}', $username, str_replace('{$email}', $email, $text));
//Hi foo@mail.com , bla bla bla
}
?>
如果在放入数据库之前创建字符串(带双引号),则值{$email}
将被更改
<?php
$email = 'foo@mail.com';
$text = "Hi {$email} , bla bla bla"; //notice the double quotes, single qoutes wont work
echo $text;
//Hi foo@mail.com , bla bla bla
?>