在我的邮件中,我从变量($text
)获取文本并通过mail()
发送。在文本中我想使用另一个变量。我从我的数据库中得到它。 ($text1
)。
邮件中的文字(变量$text
内)看起来就是这样。
“嗨$text1
,你好吗?”
现在我想用数据库中的原始文本替换$text1
。
我必须做什么?
例如:
$text1 = $row['text1'] // from Database1
$text2 = $row['text2'] // from Database1
$text = $row['text'] // from Database2
来自$text
的内容为“嗨$text1
,你好吗?你的狗$text2
....”
mail('user@example.com', 'subject', $text);
答案 0 :(得分:1)
$allVars = array('text1'=>'some text', 'text2'=>'some other text');
UPD:在你的情况下,$ allVars是来自数据库的$ row数组。
foreach($allVars as $var=>$value){
$text = preg_replace("@\\$" . $var . "([^a-zA-Z_0-9\x7f-\xff]|$)@", $value . "\\1", $text);
}
您也可以使用http://php.net/manual/en/function.get-defined-vars.php
$allVars = get_defined_vars();
答案 1 :(得分:0)
sprintf正是出于此目的
$text = "Hello %s, how it's %s";
$name = "Joe";
$foo = "going?";
$text = sprintf($text, $name, $foo);
答案 2 :(得分:-1)
这只是一个字符串替换。因为PHP会解析字符串中的变量,所以你可以强迫它不要用一点技巧来做:
$new_text = str_replace("$"."text1", $text1, $old_text);