За последние 24 часа нас посетили 54999 программистов и 1748 роботов. Сейчас ищут 802 программиста ...

Вставка переменных в строковую переменную

Тема в разделе "PHP для новичков", создана пользователем Vovchik69, 26 янв 2010.

  1. Vovchik69

    Vovchik69 Активный пользователь

    С нами с:
    14 ноя 2007
    Сообщения:
    54
    Симпатии:
    0
    Доброго времени суток. Подскажите как правильно делается. Сейчас у меня так:
    PHP:
    1. $producer.="<A HREF=\"$G_site_url/catalog/$current_groups_id/$namep.htm ><IMG SRC=$img[name] BORDER=0 ALT=$cap $row[name] align=absmiddle></a>&nbsp;&nbsp;<A HREF=\"$G_site_url/catalog/$current_groups_id/$namep.htm\" TITLE=\"$cap $row[name]\">$row[name] ($items_in_group[$current_groups_id][$row[id]])</A>".$table[end_td];
    Переменные прописываются. Хочу сделать чтобы шаблон этой строки подгружался из файла шаблона. Т.е. через preg_match получаю переменную допустим $string равную
    HTML:
    1. "<A HREF=\"$G_site_url/catalog/$current_groups_id/$namep.htm ><IMG SRC=$img[name] BORDER=0 ALT=$cap $row[name] align=absmiddle></a>&nbsp;&nbsp;<A HREF=\"$G_site_url/catalog/$current_groups_id/$namep.htm\" TITLE=\"$cap $row[name]\">$row[name] ($items_in_group[$current_groups_id][$row[id]])</A>".$table[end_td];
    соответственно она строковая и если я пишу
    PHP:
    1. $producer.=$string
    переменные в неё не вписываются. Раньше в таких случаях пользовал ereg_replace с отделением переменных символами. Мне кажется это не совсем правильно. Можно как-то по другому?
     
  2. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Что ты хочешь сделать?
    из
    PHP:
    1. <?php
    2. $str='<A HREF=\'$namep.htm\' ><IMG SRC=\'$img[name]\'></a>';
    3. $namep="mysite";
    4. $img["name"]="pic.png";
    5.  
    получить
    PHP:
    1. <?php
    2. $prod="<A HREF='mysite.htm' ><IMG SRC='pic.png'></a>";
    ?
     
  3. Vovchik69

    Vovchik69 Активный пользователь

    С нами с:
    14 ноя 2007
    Сообщения:
    54
    Симпатии:
    0
    Да именно это мне нужно! Как по умному?
     
  4. engager

    engager Активный пользователь

    С нами с:
    21 янв 2009
    Сообщения:
    1.106
    Симпатии:
    1
    наверное так.
    PHP:
    1.  $img["name"]="pic.png";
    2.  $namep="mysite";
    3.  $str="<A HREF='$namep.htm'><IMG SRC='$img[name]'></a>";
    4.  
     
  5. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    это называется шаблон, ня
    PHP:
    1. <?
    2. function Template($__tplname,$vars,$extr=true){
    3.      if(is_array($vars) && $extr) extract($vars,EXTR_SKIP);
    4.      if(!is_file($__tplname)) trigger_error("Шаблон '{$__tplname}' не найден",E_USER_ERROR);
    5.      ob_start();
    6.         include $__tplname;
    7.         $res=ob_get_contents();
    8.      ob_end_clean();
    9.      return $res;
    10. }
    11.  
    12.  
    13. /* using */
    14. $result=Template("tpl/test.tpl",array("href"=>"http://google.com","name"=>"Google Link"));
    15. print $result;
    16. /* printed:
    17.     <a href="http://google.com">Google Link</a>
    18. */
    19.  
    20.  
    21. /* in file tpl/test.tpl */
    22. <a href="<?=$href;?>"><?=$name;?></a>
    23. ?>
     
  6. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Как по умному - не знаю. Первое что приходит в голову - использовать eval. Но тогда надо очень хорошо следить за переменными и файлами.
    Если это действительно шаблон страницы, то стоит поковыряться в примере выше.
     
  7. Vovchik69

    Vovchik69 Активный пользователь

    С нами с:
    14 ноя 2007
    Сообщения:
    54
    Симпатии:
    0
    Непонял! Замену то как произвести?
    Ну это получается просто вставка PHP, а так не хотелось. Или я не правильно понял?
     
  8. Vovchik69

    Vovchik69 Активный пользователь

    С нами с:
    14 ноя 2007
    Сообщения:
    54
    Симпатии:
    0
    eval попробую обязательно! Поскольку новичёк, никак не мог вспомнить как называется, хотя помню что применял. Насчет примера выше я уже написал, не хочется php в строку вставлять. Или же там какая хитрость, которую я проглядел?
     
  9. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    А какая разница вот так:
    Код (Text):
    1. <A HREF=\'$namep.htm\' ><IMG SRC=\'$img[name]\'></a>
    или вот так:
    Код (Text):
    1. <a href="<?=$href;?>"><?=$name;?></a>
    Весь вопрос в организации.
    Если можно сначала объявить переменные, а потом подключить файл, то банальный include или шаблон проще и логичнее. Шаблон более функционален. Его можно будет расширить при необходимости.
    Так будет понятнее при сопровождении программы.
    Насколько я понимаю при этом подходе придется разбираться с файлом шаблонов, делить его на несколько файлов.

    Если же нельзя разбить файл или исходные строки приходят всегда раньше переменных для вставки, то тогда можно попробовать eval. Правда там надо немного с экранированием заморочиться.
     
  10. Vovchik69

    Vovchik69 Активный пользователь

    С нами с:
    14 ноя 2007
    Сообщения:
    54
    Симпатии:
    0
    А чем плохо вот так?
    PHP:
    1. <?php
    2. $G_site_url='mysite.ru';
    3. $current_groups_id='245';
    4. $namep='volga';
    5. $img[name]='img.gif';
    6. $t_string="<A HREF=\"{$G_site_url}/catalog/{$current_groups_id}/{$namep}.htm\" ><IMG SRC=\"{$img['name']}\"</a>";
    7. echo $t_string;
    8. ?>
    На выходе получается то что мне нужно:
    HTML:
    1. <A HREF="mysite.ru/catalog/245/volga.htm" ><IMG SRC="img.gif"</a>
    Лично я не знал про такой вывод. Или в нем что-то плохо?
     
  11. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Это вообще самый логичный вариант.
    Просто я понял что строки беруться из некоего файла, а не создаются в коде.
     
  12. Vovchik69

    Vovchik69 Активный пользователь

    С нами с:
    14 ноя 2007
    Сообщения:
    54
    Симпатии:
    0
    Вы правы! Нужно именно из файла и тогда этот прием не работает. Сделал через eval. Спасибо за подсказку! Единственно подскажите что значит вот эта строчка:
    PHP:
    1. <?  eval ("\$str = \"$str\";"); ?>
    Просто скопировал с примера.
     
  13. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Volt(220)
    что-ты советуешь? Какой eval?

    Спилите мушки, оба.
     
  14. Vovchik69

    Vovchik69 Активный пользователь

    С нами с:
    14 ноя 2007
    Сообщения:
    54
    Симпатии:
    0
    Без аргументов пустой треп! Если считаешь себя умным, возьми и аргументированно объясни. А так не е... мозги!
     
  15. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Vovchik69
    Один даун хочет пистолет в жопу. Второй умник дает рекомендации, как получше его туда засунуть.
    Так доступно?

    Тебе дали единственное нормальное и полностью работоспособное решение в твоем случае
    А ты прощелкал клювом и хочешь каких-то аргументов.

    Так вот... они бесполезны. Такие как ты аргументов не понимают.
    За 2 года на форуме и быть полным нулем - надо уметь.
     
  16. Vovchik69

    Vovchik69 Активный пользователь

    С нами с:
    14 ноя 2007
    Сообщения:
    54
    Симпатии:
    0
    Я его не прощелкал! Я написал почему мне оно не нравится!
    За то я смотрю ты за 4 месяца ох.. гуру стал. Я написал, аргументируй чем хуже eval, а потом махай своей мушкой!
    Так на будущее, базар фильтруй! Что до интернета недавно добрался.
     
  17. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    А я тебе говорил - спили мушку. Но, похоже, со спиленной мушкой тебе не нравится.
    Зато мушка побольше - нравится. Бывают и такие товарищи.

    И смысл? Аргументировать можно, тому кто знает примерно столько же как ты.
    А школьников можно только учить.

    К тому же, такие как ты, аргументы в любом случае не читают.
    Им даже думать сложно -
    В каком из двух кусков кода, нет вставки на PHP?
    В обоих есть вставка? Печаль то какая.
    Это кем надо быть, чтобы этого не увидеть сразу? Но смело рассуждать нравится/ненравится.

    Конечно недавно, ровно 11 лет назад. Вот только школоты с "базаром" тогда было много меньше.

    Вобщем, чудо-школьное в гугл быстрыми скачками по вопросу eval и шаблонизатор. Чтобы не задавал на будущее тупых вопросом, да еще с матами.
    О том что узнаешь, доложишь тут.
     
  18. Vovchik69

    Vovchik69 Активный пользователь

    С нами с:
    14 ноя 2007
    Сообщения:
    54
    Симпатии:
    0
    Дальнейшее обсуждение считаю бессмысленным. Про eval так ничего и не сказано.
    Хоть один в студию!
    А откуда ты знаешь кто я есть! И почему ты решил что можешь мне ТЫКАТЬ?
    На свой базар смотри! Я твою трепню посмотрел 90% полный флуд! А тебе походу побольше сообщений заработать надо ПОУЧАТЕЛЬ ты наш! Гадость! А то что ты додумал в троеточиях мат, твоя личная проблема! КАЖДЫЙ ДУМАЕТ В МЕРУ СВОЕЙ РАСПУЩЕННОСТИ! А вот револьвер в одно место походу тебя возбуждает, мушку тогда не спиливай для себя.
    Печаль в том что во втором случае можешь писать любую байду на PHP и она будет исполняемая! Ты не заметил разницы ПОУЧАТЕЛЬ?
     
  19. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Потому что нормальный человек осознает меру своего незнания и слушает что ему говорят те кто знает.
    Но поскольку ты никто, и зовут тебя никак. То ты предпочитаешь делать глупости и качать права.

    А в случае с eval это будет не так? бог ты мой :) откуда столько тупости в одном человеке? :) Скажи свой адрес, я вышлю тебе презервативы, чтобы идиоты не размножались.

    Специально для даунов не умеющих пользоваться поиском и читать
     
  20. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    я пад стулом
    Vovchik69
    дурень, это одно и тоже. в евале тоже можно писать "любую байду".
    поучитесь у поучателя
     
  21. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
  22. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Mr.M.I.T.
    вредный ты....
    не дал какашками покидаться.
     
  23. Vovchik69

    Vovchik69 Активный пользователь

    С нами с:
    14 ноя 2007
    Сообщения:
    54
    Симпатии:
    0
    SimpliestВот
    Mr.M.I.T.аргументировал! А ты языком чешешь!
    У меня эта строка тащится из файла! PHP не подключишь. А в твоем варианте нет проблем. Короче, моя твоя не понимает! Я работаю! Мне некогда просто хрень на клаве набирать, а ты бездельник? Нечего толкового написать так и не написал! 24-сообщения в день(причем бестолковых) заняться нечем? Займись пистолетом и своей попой!
     
  24. Vovchik69

    Vovchik69 Активный пользователь

    С нами с:
    14 ноя 2007
    Сообщения:
    54
    Симпатии:
    0
    Терпеть не могу дохрена умных. Хотя в ссылках която польза была. P.S.Одеяло стесняешся скинуть , Стыдно?
     
  25. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    так блин. те два не последних человека говорят что это одно и тоже. хоть файла хоть не файла, что ещё нужно?
    хочешь подробнее иди смотреть сорсы php ядра