|
|
|
| Здравствуйте, нашол тут на форуме несколько листингов шаблонизаторов, некоторые из них не работают вообще, а некоторые работают, но некорректно...
И я хотел бы спросить у более опытных пользователей, почему не работает вот такая функция:
<?
function replacetag($tpl_file, $page_vars)
{
$search = array();
$keys = array_keys($page_vars);
for($i = 0; $i < sizeof($page_vars); $i++)
{
$search[] = "'{ ". $keys[$i] ."}'i";
}
return preg_replace($search, $page_vars, $tpl_file);
}
$page_vars['PRICOL'] = 'Привет!';
$tpl_index=("http://site.ru/tpl//index.tpl");
$page = replacetag($tpl_index, $page_vars);
include $page;
?>
|
В файле index.tpl пишу {PRICOL}, и на этом месте по идее должно появиться слово "Привет!", но так и остаёться {PRICOL}...
Что нужно изменить? | |
|
|
|
|
|
|
|
для: podpole
(04.05.2007 в 22:25)
| | не { а \{
потому что в регулярных { это спец символ, как и его пара } | |
|
|
|
|
|
|
|
для: bronenos
(04.05.2007 в 22:45)
| | Непонял, это где нужно изменить? В шаблонизаторе или в шаблоне вставить не {PRICOL} а \{PRICOL\} или вообще не там и нетам? По подробнее, если можно! | |
|
|
|
|
|
|
|
для: podpole
(04.05.2007 в 22:54)
| | '/\{PRICOL\}/' | |
|
|
|
|
|
|
|
для: bronenos
(04.05.2007 в 23:18)
| | Всёравно не работает(((
Темболее не очень красиво выглядит! Нужно чтобы просто было {PRICOL}... | |
|
|
|
|
|
|
|
|
для: podpole
(05.05.2007 в 07:56)
| | тогда вообще str_replace | |
|
|
|
|
|
|
|
для: podpole
(04.05.2007 в 22:25)
| |
<?
function replacetag($tpl_file, $page_vars)
{
$search = array();
$keys = array_keys($page_vars);
for($i = 0; $i < sizeof($page_vars); $i++)
{
$search[] = "/\{". $keys[$i] ."\}/i";
}
return preg_replace($search, $page_vars, $tpl_file);
}
$page_vars['PRICOL'] = 'Привет!';
$tpl_index=file_get_contents("file.tmpl");
$page = replacetag($tpl_index, $page_vars);
echo $page;
?>
|
| |
|
|
|
|
|
|
|
для: FroNiTy
(05.05.2007 в 08:58)
| | Вот это работает! Спасибо! | |
|
|
|
|
|
|
|
для: FroNiTy
(05.05.2007 в 08:58)
| | А сюда: $page_vars['PRICOL'] = 'Привет!'; вместо слово прикол почемуто нельзя вставить чтото вроде require_once("files.php"); и даже переменные не отображает, только текст! Или я не правильно чтото делаю? | |
|
|
|
|
|
|
|
для: podpole
(05.05.2007 в 09:46)
| | поясните вопрос... что куда? что на что заменить? | |
|
|
|
|
|
|
|
для: FroNiTy
(05.05.2007 в 09:52)
| | Я хочу чтобы когда дизайнер делает шаблон, на месте где он допустим хочет чтобы выводились новости, писал слово {NEWS} , а для этого требуеться чтобы скрипт обрабатывающий этот шаблон, поставил в место этого слова не слово допустим "Привет!", а присоеденил другую страницу, или допустим вызвал бы функцию какуюнибудь...
И я с этой целью хочу вставить вместо слова Привет! php-код, типа require_once($news), а он вместо страницы просто печатает его, а пробывал я в разных вариантах, и кавычки менял, и ";" ставил, но он не хочет ничего выводить... | |
|
|
|
|
|
|
|
для: podpole
(05.05.2007 в 10:03)
| |
<?
function replacetag($tpl_file, $page_vars)
{
$search = array();
$keys = array_keys($page_vars);
for($i = 0; $i < sizeof($page_vars); $i++)
{
$search[] = "/\{". $keys[$i] ."\}/i";
$page_vars[$keys[$i]] = file_get_contents($page_vars[$keys[$i]]);
}
return preg_replace($search, $page_vars, $tpl_file);
}
$page_vars['NEWS'] = "http://localhost/news.php";
$tpl_index=file_get_contents("names.txt");
$page = replacetag($tpl_index, $page_vars);
echo $page;
?>
|
Если вы хотите использовать функцию только для подстановки результатов работы других скриптов, то это подойдет (заметьте, что путь к файлу полный)... если совмещать вывод результата и просто какого-нибуть слова, как в первой версии, то надо еще помудрить... | |
|
|
|
|
|
|
|
для: FroNiTy
(05.05.2007 в 10:56)
| | Почему то выводит не результат работы скрипта, а сам текст скрипта.... Как же так сделать.... Я если честно из скрипта не понимаю: что значит $i, что делает $search[] = "/\{". $keys[$i] ."\}/i"; и что такое return preg_replace....
Я думал что это будет проще... | |
|
|
|
|
|
|
|
для: FroNiTy
(05.05.2007 в 09:52)
| | А... Всё понял! Только теперь появился другой вопрос!
Оказываеться нужно было писать require_once('files.php') без кавычек!
Но почемуто это всё отображаеться не в том месте где стоит {NEWS}, а выше всего содержимого, а должно быть внутри, т.е. там, где стоит {NEWS}! Как это исправить? | |
|
|
|
|
|
|
|
для: podpole
(05.05.2007 в 10:55)
| | у вас просто require_once('files.php') сработал... к функции это никак не относится | |
|
|
|
|
|
|
|
для: FroNiTy
(05.05.2007 в 10:57)
| | Никто так мне и не подскажет как можно вывести результат выполнения скрипта а не его содержимое.... | |
|
|
|
|
|
|
|
для: podpole
(05.05.2007 в 17:49)
| | указать полный адрес вместе с http | |
|
|
|
|
|
|
|
для: bronenos
(05.05.2007 в 17:57)
| | СПАСИБО!!! Заработало! Если теперь будет работать и подключение результата выполнения скрипта и добавление текста то с меня бутылка и тему можно считать закрытой))) | |
|
|
|
|
|
|
|
для: podpole
(05.05.2007 в 18:09)
| | Всётаки немножко не так как хотелось работает...
Вроде всё нормально, и сценарий выводящий новости прикрепил в нужное место, но когда нажимаешь на ссылку Далее, чтобы прочитать полную новость в заголовке передаються переменные, которые не воспринимаються сценарием, потамучто он не присоеденяеться, а присоеденяеться только лишь результат работы сценария, не получившего значений переменных....
И почемуто кажеться что выход совсем рядом...
Я пытаюсь сценарий вывода новостей объеденить с индексом в один файл, но тогда нет возможности подключить шаблонизатор, а без него тоже некуда!
Какие есть мысли? | |
|
|
|