Переменные в переменной

Strannik

Новичок
Переменные в переменной

Есть переменная:
PHP:
$name="Вася";
Есть ещё переменная:
PHP:
$greeting="Welcome, $name";
Как сделать, что б в переменной $text была строка "Welcome, Вася"?

Пока выкрутился через:
PHP:
$text=sprintf("Welcome, %s",$name);
Но очень нужно, что-нибудь типа eval(), так как $greeting заранее неизвестна и неизвестно количество и имена параметров.

Спасибо за внимание.
 

Strannik

Новичок
Автор оригинала: Demiurg
echo $greeting;
Было б так просто, я б общественность не беспокоил...

1. echo $greeting;
Выводит "Welcome, $name"

2. И это главное! Надо именно в переменной получить "Welcome, Вася"!
 

Demiurg

Guest
$name="Вася";
$greeting="Welcome, $name";
echo $greeting;
выводит Welcome, $name ?!! не верю!
 

Strannik

Новичок
Автор оригинала: Demiurg
$name="Вася";
$greeting="Welcome, $name";
echo $greeting;
выводит Welcome, $name ?!! не верю!
Сорри... И правда в таком варианте выводит как надо. Поскольку пример надуманный, поторопился...
Но как в переменную этот вывод запихнуть???
 

Demiurg

Guest
ОБъясни, что требуется, а то не понятно, что куда "запихивать".
 

Strannik

Новичок
Автор оригинала: Demiurg
ОБъясни, что требуется, а то не понятно, что куда "запихивать".
В переменной $text должна быть строка "Welcome, Вася" которая получается из $greeting и $name.
 

Alkinoy

Guest
А что тебе мешает разбить твою исходную строку, в которую надо вставлять переменные, на несколько подстрок. например
$str1='Привет, ';
$str2='. Мы рады видеть вас ';
$str3='раз.';
$name='Васисусилий';
$raz=4;
$string=$str1.$name.$str2.$raz.$str3;

Виноват, задумался....
 

Strannik

Новичок
Автор оригинала: Alkinoy
А что тебе мешает разбить твою исходную строку, в которую надо вставлять переменные, на несколько подстрок. например
$str1='Привет, ';
$str2='. Мы рады видеть вас ';
$str3='раз.';
$name='Васисусилий';
$raz=4;
$string=$str1+$name+$str2+$raz+$str3;
Можно, конечно, но не спортивно! :)
А если серьёзно, то исходная строка это ОДНО поле в базе. Можно, конечно, навставлять туда разделителей и бить в массив строк - это всё понятно. Можно даже, наверное, результат записать в файл и прочитать его оттуда... :) Но неужели нет функции, разбирающей строковую переменную так, как это делает echo?
 

Alkinoy

Guest
А у тебя разделители и так уже вставлены - знаки $ и за ними имя переменной.
 

Demiurg

Guest
Strannik, тогда тебе нужен метод предложеный Айреном, только оптимизированый немного.

echo str_replace(
array('{name}' , '{adres}' , '{email}' ..) ,
array($name , $adres , $email ..) ,
$str);

не нужно в данных хранить знания о скриптах, которые их обрабатывают.

Alkinoy, узнай сначало как в php производится конканация строк, а потом советуй.
 

Strannik

Новичок
Автор оригинала: Demiurg
Strannik, тогда тебе нужен метод предложеный Айреном, только оптимизированый немного.

echo str_replace(
array('{name}' , '{adres}' , '{email}' ..) ,
array($name , $adres , $email ..) ,
$str);

не нужно в данных хранить знания о скриптах, которые их обрабатывают.
В общем, как всегда, всё гениальное - просто! :)

Спасибо большое за науку, заработало так как надо!
 

voodoo

Новичок
красивое слово "конканация"
а что это такое? я тоже узнать хочу чтоп советовать потом.
 

tony2001

TeaM PHPClub
конкаТЕнация.
"те" потерялось на пути от браузера к серверу, видимо...
 

Demiurg

Guest
пропустил то всего 20% букв в слове, и сразу приставать :)
 
Сверху