2013-05-24 2 views
-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('[email protected]', 'subject', $text); 
+0

Пожалуйста отправьте соответствующий код ... Не могу больше с тем, что вы дали нам до сих пор. – brbcoding

+0

Можете ли вы показать нам, что вы пробовали? – hek2mgl

+0

ok Я добавляю его. Надеюсь, это поможет. – TrivoXx

ответ

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(); 
+0

Perfekt благодарит. Ваше решение идеально подходит! – TrivoXx

-1

Это просто строка замены , Поскольку PHP будет анализировать переменные внутри строк, вы можете заставить его не делать это с небольшим трюком:

$new_text = str_replace("$"."text1", $text1, $old_text); 
+0

Я думаю, он действительно хочет, чтобы его заменили – Sebas

+0

Спасибо за ваш ответ. Что вы имеете в виду с $ old_text? Мой текст в переменной $ text выглядит следующим образом. Привет $ text1, как дела? Я надеюсь, ты впорядке. Что ваша собака $ text2? У вас все еще есть $ text3? Что мне делать, если у меня есть более одной переменной, которую нужно заменить? – TrivoXx

+0

Я использовал $ new_text и $ old_text, чтобы вы могли видеть, что $ old_text - это исходный текст, а $ new_text - это то, что вы получаете после замены. Чтобы сделать больше замен, вам нужно снова использовать str_replace или сделать str_replace массивами. Тем не менее, я чувствую, что вы не можете использовать массивы, если у вас возникли трудности с чтением синтаксиса str_replace. Поэтому я предлагаю использовать несколько вызовов str_replace. – kainaw

0

sprintf именно для этой цели

$text = "Hello %s, how it's %s"; 
$name = "Joe"; 
$foo = "going?"; 
$text = sprintf($text, $name, $foo); 
+0

Я думаю, что это невозможно с вашей версией. Поскольку переменные в $ text поступают из поля ввода, и я хочу свободно использовать переменные, чтобы использовать это пространство, чтобы заполнить его из моей базы данных. Надеюсь, вы знаете, что я имею в виду :-) – TrivoXx

+0

Нет, я не понимаю, что вы имеете в виду. –

Смежные вопросы