|
|
|
| Долго думал как назвать тему...ну ладно вся проблема не в этом
Вобщея я делаю CMS, в которой все страницы создаються в WISIWIG редакторе, и отправляються в базу в ввиде HTML кода ...надеюсь понятно изложил.
А вся проблема в том что мне нужно как-то в тот HTML который храниться в базе php вставки к примеру вывод новостей или еще чего....щас это выгладет
много HTML'я до новостей
<? news('full',7);?>
много HTML'я после новости
|
опять таки надеюсь что меня поняли.... а проблема в том что в браузере я вижу 100% информацию извлеченную из базы. А хотелось бы что бы вместо <? news('full',7);?>, выполнялась функция news().
помогите, кто чем сможет.... | |
|
|
|
|
|
|
|
для: KR0k
(09.08.2005 в 17:38)
| | Следует создать конфигурационный файл .htaccess, в котором прописать, что html файлы следует интерпретировать как php-скрипты. Подробности в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=1010 | |
|
|
|
|
|
|
|
для: cheops
(09.08.2005 в 21:01)
| | Всетаки меня не совсем правильно поняли....
Делов том что расширение файла у меня какразтаки php. Но HTML код, храниться в базе пример код я приводил выше. А выводиться это у меня через echo $pages['main']; Но он просто, выводиться а мне хорошо бы было что бы еще и результат выполнения функции в том месте в котором она стоит выводил. У функций будут входящие параметры... | |
|
|
|
|
|
|
|
для: kr0k
(10.08.2005 в 12:03)
| | Тогда следует анализировать содержимое HTML-скроки и выводить её по частям. Сначала вывести до первого вхождения <?, содержимое между тэгами <? и ?> пропустить через функцию eval(), затем опять вывести в окно браузера и т.д. Т.е. осуществить разбор файла, как это делает PHP. | |
|
|
|
|
|
|
|
для: cheops
(10.08.2005 в 13:24)
| | Спасибо!!!
По моему eval() это то что надо, только что-то у меня не получаеться его запустить...
получаеться только переменные заменять те вместо $test у меня ее значение выводиться, но вот функции так и остаються news('full',7);
Может call_user_func() попробывать запустить? и еще одна просба.... вроде решение почти есть, помогите мне получаемый текст разпарсить....я просто вторую ноч с этим борюсь....сильно торможу! | |
|
|
|
|
|
|
|
для: KR0k
(10.08.2005 в 15:28)
| | А распластать в смысле отделить html от php? | |
|
|
|
|
|
|
|
для: cheops
(10.08.2005 в 18:16)
| | Ну да, к примеру у меня есть
$txt = '<b>Пример</b><br><?php_function('val1','val2');?> кода взятого из базы....';
Тут надо что-то с этим сделать что бы при:
echo $txt;
Вывело $txt не как есть(Я в курсе что там у меня синтасическая ошибка, но в данный момент это погоды не делает), а вместе с результатами работы функции! | |
|
|
|
|
|
|
|
для: KR0k
(10.08.2005 в 18:35)
| | Обычно прибегают примерно к такому коду
<?php
$txt = '<b>Пример</b><br><?php echo "Hello"; ?> кода взятого из базы....';
// Вызываем функцию замены
echo preg_replace_callback("|<\?php([^?]+)\?>|i",
"execute_php",
$txt);
// функция обратного вызова
function execute_php($matches)
{
// как обычно: $matches[0] - полное вхождение шаблона
// $matches[1] - вхождение первой подмаски,
// заключенной в круглые скобки, и так далее...
return eval($matches[1]);
}
?>
|
Только в данном конкретном случае... не очень хорошо получается - сначала выводится Hello, а потом всё остальное... У вас функция возвращает какое нибудь значение или просто производит побочные действия? | |
|
|
|
|
|
|
|
для: cheops
(11.08.2005 в 01:37)
| | Да, возвращает! | |
|
|
|
|
|
|
|
для: kr0k
(10.08.2005 в 12:03)
| | http://softtime.ru/forum/read.php?id_forum=1&id_theme=5826&page=1
Тут обсуждали похожую задачку. Как я понял, придется заводить систему шаблонных тегов и подставлять вместо них результаты выполнения функции. | |
|
|
|
|
|
|
|
для: KR0k
(09.08.2005 в 17:38)
| | А 'full' это переменная или ...?
| |
|
|
|
|
|
|
|
для: Андрюха.
(10.08.2005 в 12:37)
| | В данный момент это не столь важно.... но если кому интересно, то это тип отображения новостей full - Полный, title - только название....и тд!!!
Вобщем входные параметры не переменные....они статичные! | |
|
|
|
|
|
|
|
для: KR0k
(10.08.2005 в 13:26)
| | Ну а часть функции не покажете. И по-моему лучше передать $id, а в функции определить full или title | |
|
|
|
|
|
|
|
для: Андрюха.
(10.08.2005 в 13:47)
| | Да пожалуйсто если мне помогут разобраться...
кусок кода из index.php
$dbi = mysql_query('SELECT * FROM pages WHERE id='.$main_page.';');
$page = mysql_fetch_array($dbi);
echo '<h1>'.$page['title'].'</h1>';
echo $page['txt']; // <- вот вывод данных из базы из за которых я 2ноч не сплю
|
пример содержимого базы я показал в первом посте.
А все это вставляеться в шаблом путем вызова этой функции index.tpl
<html>
<head>
<title><?=$title;?></title>
</head>
<body>
<?main();?>
</body>
</html>
|
Скажу сразу что тут все в порядке.... | |
|
|
|
|
|
|
|
для: KR0k
(10.08.2005 в 15:25)
| | Ну не совсем
<?main();?> равно забыл и ";" ?
- файл 1.php ----- tpru-u....(index.tpl)
<?php
include("2.php");
?>
много HTML'я<p>
<?=(news('full',38376))?>
<p>много HTML'я
|
файл 2.php
<?php function news($id,$main_page)
{
$dbi = mysql_query('SELECT * FROM ss_products WHERE ID='.$main_page.';');
$page = mysql_fetch_array($dbi);
echo '<h1>'.$page[0].'</h1>';
echo $page[1];
}
?>
|
Так имеешь в виду ??? | |
|
|
|
|
|
|
|
для: Андрюха.
(10.08.2005 в 17:12)
| | ой, наверно наши мысли разошлись.....
У меня проблема в вывде данных из базы была!
дело в том что $page[1] это не просто текст! там есть и php скрипты! | |
|
|
|
|
|
|
|
для: KR0k
(09.08.2005 в 17:38)
| | У меня пока только одним способом получилость это реализовать не меняя код,
я в базу занашу не
много HTML'я до новостей
<? news('full',7);?>
много HTML'я после новости
|
а
Много HTML'я до
<iframe src='test.php?test=123' frameborder=0 vspace=0 hspace=0 marginwidth=0 marginheight=0 scrolling=no>
</iframe>
Много HTML'я после
|
Может всетаки кто-то предложет что-нибудь более красивое, а то эти фреймы.... | |
|
|
|