Всем привет, помогите пожалуйста с регулярными выражениями
-------------------------
есть форма
<form action=test.php method=post>
<p>вывести текст</p>
<input type=text name=text>
</form>
----------------------------------
есть файл шаблон сверстанный
index.html
<body><table><tr><td>
{content}</td></tr>
<tr><td>{menu}</td></tr></table>
</body>
есть скрипт
test.php
<?php
$out=str_replace("{content}",$_post['text'],'{content}');
$file=fopen('./page/index.html','w');
fputs($file,$out);
fclose($file);
?>
----------------------------
воть, нифига не работает
А че должно получиться-то.. Я чет не понял, а где сам вопрос?
UAS нужно чтобы строка {content} заменялась текстом, введенным через форму.
Тебе нужно парсить просто файл шаблона, где у тебя {content}.
Допустим файл шаблона template.tpl
А в index.php у помести такую ерунду:
Код:
$template = file('template.tpl');
foreach ($template as $parseString)
{
$parseString = str_replace('{content}', $_post['text'], $parseString);
echo $parseString;
}
foreach ($template as $parseString)
{
$parseString = str_replace('{content}', $_post['text'], $parseString);
echo $parseString;
}
Ну и так со всеми переменными.
Спасибо большое, а передать через форму текст сразу в файл не получиться, вместо того чтобы брать его из шаблона. Мне это нужно.
Вот твой код:
Код:
$out=str_replace("{content}",$_post['text'],'{content}');
1. Массива $_post не существует. Есть только $_POST.
2. str_replace(что заменить,на что заменить,где заменить);
у тебя
где заменить - {content}
что заменить - {content}
на что заменить - пусто
в результате получаем - пусто
$out=str_replace("{content}",$_POST['text'],$_POST['text']);
$file=('./page/index.html','r+');
fputs($file,$out);
то что вводиться в форме идет в шаблон, цель достигнута, спасибо всем за ответы.
MIKE если оставить третий параметр функции str_replace пустым то выдает ошибку T_STRING, я написал переменную $_POST['text'], вроде пока что работает.
Код:
function parse($tpl, $args){
if(file_exists($tpl)) $ctpl=file_get_contents($tpl);
else exit('Шаблон не найден: '.$tpl);
if(is_array($args)){
foreach($args as $key => $value){
$ctpl=str_replace('{'.$key.'}', $value, $ctpl);
}
}
return $ctpl;
}
// Используем шаблонизатор
$template="test.tpl";
$args["contents"]=htmlspecialchars($_POST["text"]);
$args["title"]=htmlspecialchars($_POST["title"]);
print parse($template, $args);
if(file_exists($tpl)) $ctpl=file_get_contents($tpl);
else exit('Шаблон не найден: '.$tpl);
if(is_array($args)){
foreach($args as $key => $value){
$ctpl=str_replace('{'.$key.'}', $value, $ctpl);
}
}
return $ctpl;
}
// Используем шаблонизатор
$template="test.tpl";
$args["contents"]=htmlspecialchars($_POST["text"]);
$args["title"]=htmlspecialchars($_POST["title"]);
print parse($template, $args);
На ошибки не проверял, но должно работать.
Сори за флуд я ошибся. надо {content} вставлять было вместо $_POST['text']
Цитата: neyron-net
Спасибо большое, а передать через форму текст сразу в файл не получиться, вместо того чтобы брать его из шаблона. Мне это нужно.
А какой смысл? Все ведь итак будет отображаться именно в индексном файле динамически, и код будет отделён от дизайна + дизайн будет в отдельном файле, что позвалит легко и непренуждённо его редактировать. А если всё мешать в 1 файл, то проще воспользоваться простым выводом переменных из _post[] или _get[].
Сама суть шаблонного построения сайта и заключается в отделении дизайна от php, что позволяет отредактировав 1 файл (например template.tpl) изменить дизайн всего сайта, без вмешательства в php.
Верно говоришь, спасибо, попробую внедрить твой парсер в свою чудо програмку)))