Нужна часть скрипта для следующей задачи.
Есть на сервере файл-шаблон.phtml вида:
...
<p>Текст первого абзаца - <?=$_POST[abs1]?></p>
<p>Текст второго абзаца - <?=$_POST[abs2]?></p>
...
И соответственно переменные $_POST, которые приходят из формы.
В скрипте нужно получить строку с введенными значениями.
Если делать через file_get_contents(), то значения в строке не подставляются.
Пока решаю через require шаблона и получение строки в буфер вывода. Но плохо, что при этом шаблон (строка) выводится в браузер. Приходится делать принудительный возврат браузера. А мне нужно эту строку только заполнить и перезаписать в новый файл. Без вывода в поток! Есть ли более оптимальное решение?
1. cat - 25 Июня, 2009 - 11:43:00 - перейти к сообщению
2. JustUserR - 25 Июня, 2009 - 11:48:41 - перейти к сообщению
Ммм то есть у вас есть файл-шаблон в котором заместо $_POST[чтототут] надо подставить аналогичную переменную и все это не выводить на экран а сохранить в другую переменную?
Тогда пользуйтесь к примеру регулярными выражениями типа такого (Я как обычно привожу на Perlе) - s/\$_POST\[(.*?)\]/$_POST["$1"]/gs
Тогда пользуйтесь к примеру регулярными выражениями типа такого (Я как обычно привожу на Perlе) - s/\$_POST\[(.*?)\]/$_POST["$1"]/gs
3. cat - 25 Июня, 2009 - 12:25:03 - перейти к сообщению
JustUserR пишет:
Ммм то есть у вас есть файл-шаблон в котором заместо $_POST[чтототут] надо подставить аналогичную переменную и все это не выводить на экран а сохранить в другую переменную?
Тогда пользуйтесь к примеру регулярными выражениями типа такого (Я как обычно привожу на Perlе) - s/\$_POST\[(.*?)\]/$_POST["$1"]/gs
Тогда пользуйтесь к примеру регулярными выражениями типа такого (Я как обычно привожу на Perlе) - s/\$_POST\[(.*?)\]/$_POST["$1"]/gs
К сожалению не понял.
Куда вставить ваше выражение? В шаблон или как-то в строку в PHP скрипте?
Т.е. при выполнении скрипта, встретив регулярное выражение, сервер сделает в строке замену переменной на ее значение? Без вывода в поток?
Извините, может я непонятно сформулировал?
Мне нужно, чтобы в скрипте сервер без вывода на экран прочитал строку с переменными и сохранил эту строку в другую переменную. Уже со значениями.
4. JustUserR - 25 Июня, 2009 - 13:01:24 - перейти к сообщению
cat Дадада это часть кода Регулярное выражение как раз делает различные замены внутри переменной-строки не выводя ничего на экран
Вообще чс помощью них можно заменить все что угодно Вообще советую вам немного про них почитать http://php.su/functions/?cat=pcre
Вообще чс помощью них можно заменить все что угодно Вообще советую вам немного про них почитать http://php.su/functions/?cat=pcre
5. valenok - 25 Июня, 2009 - 13:06:26 - перейти к сообщению
$template = include 'tpl.php';
--
tpl.php
return "Привет $_POST['name']";
--
tpl.php
return "Привет $_POST['name']";
6. cat - 25 Июня, 2009 - 13:31:34 - перейти к сообщению
JustUserR пишет:
cat Дадада это часть кода Регулярное выражение как раз делает различные замены внутри переменной-строки не выводя ничего на экран
Вообще чс помощью них можно заменить все что угодно Вообще советую вам немного про них почитать http://php.su/functions/?cat=pcre
Вообще чс помощью них можно заменить все что угодно Вообще советую вам немного про них почитать http://php.su/functions/?cat=pcre
Спасибо.
Но прошу прощения еще раз. Если у меня 5-6 переменных POST. Я должен написать столько же регулярных выражений для замены? Или же может быть одно универсальное, которое меняет ключ на значение? А нет ли для этого встроенной функции?
Нельзя ли показать на конкретном примере кусочек кода для двух пар переменных/значение:
$_POST[tema]=обзор и $_POST[data]=24.06.2009
Заранее еще раз спасибо.
(Добавление)
valenok пишет:
$template = include 'tpl.php';
--
tpl.php
return "Привет $_POST['name']";
--
tpl.php
return "Привет $_POST['name']";
В том-то и вся суть. Когда применяю incluide замена в строке происходит, но при этом содержание выводится на экран. Хотя вроде функция должна передавать строку ТОЛЬКО в переменную.
7. JustUserR - 25 Июня, 2009 - 14:38:26 - перейти к сообщению
cat Нет регулярка она универсальная и может вырезать люббые замены ПО ШАБЛОНУ
8. Ch_chov - 25 Июня, 2009 - 15:29:38 - перейти к сообщению
Цитата:
Когда применяю incluide замена в строке происходит, но при этом содержание выводится на экран. Хотя вроде функция должна передавать строку ТОЛЬКО в переменную.
Можно использовать буферизацию вывода: http://www.php.su/functions/?cat=outcontrol
Или специальный php шаблонизатор,
например такой http://forum[dot]dklab[dot]ru/viewtopic.php?t=16364