-2

嗨,在我的邮件中,我从变量 ( $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);
4

3 回答 3

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();
于 2013-05-24T14:23:54.260 回答
0

sprintf正是为此目的

$text = "Hello %s, how it's %s";
$name = "Joe";
$foo  = "going?";
$text = sprintf($text, $name, $foo);
于 2013-05-24T14:09:48.557 回答
-1

这只是一个字符串替换。因为 PHP 会解析字符串中的变量,所以你可以通过一个小技巧强制它不这样做:

$new_text = str_replace("$"."text1", $text1, $old_text);
于 2013-05-24T14:07:40.317 回答