Forum Webscript.Ru

Программирование => PHP => Тема начата: DRon от 07 Сентября 2002, 00:15:05

Название: Работа с EVAL. Как обработать функцию при вытаскивании страницы из MySQL?
Отправлено: DRon от 07 Сентября 2002, 00:15:05
Я достаю из MySQL html код через eval:

eval ("\\$str = \\"$main\\";");

И мне в него нужно вставить например virtual(); или include и пару своих функций.

Если их просто так написать, выводится не результат работы функции, а просто название самой функции, ну т.е. что я написал то и вывелось.

Я сделал перед eval preg_replace, типа
$search = array(
"",
"<\\/insert_file>"
);
$replace = array
(
"\\"; include(\\"",
"\\"); echo\\""
);

Стало работать, но почему-то файл инклудится не в то место где стоит 111.html, а перед всем текстом, который получен из БД. При этом получается так, что содержание ПОСЛЕ insert_file "присоединятся" поднимается наверх.

И получается:
Вставленный файл
Кусок ПОСЛЕ тэга
Кусок, который был должен быть ДО тэга

А должно быть:
Кусок, который был должен быть ДО тэга
Вставленный файл
Кусок ПОСЛЕ тэга

Вот как можно такую штуку провернуть, сделать несколько своих тэгов, которые будут заменяться на нужные функции, и выводится в нужном месте?
Название: Работа с EVAL. Как обработать функцию при вытаскивании страницы из MySQL?
Отправлено: ThE0ReTiC от 07 Сентября 2002, 01:01:49
Лучше не через eval дклать. Она хоть и шустрая, однако кой чего не понимает. Например на выводит элементы классового массива, а вместо этого пишет банальное Array.
Название: Работа с EVAL. Как обработать функцию при вытаскивании страницы из MySQL?
Отправлено: DRon от 07 Сентября 2002, 08:34:50
ThE0ReTiC
А как по другому?
Название: Работа с EVAL. Как обработать функцию при вытаскивании страницы из MySQL?
Отправлено: Меняздесьдавнонет от 07 Сентября 2002, 12:00:57
Ну, как минимум, определиться, где ты все-таки,хранишь код - в инклюдах, или в базе.
Название: Работа с EVAL. Как обработать функцию при вытаскивании страницы из MySQL?
Отправлено: ThE0ReTiC от 07 Сентября 2002, 12:10:30
html код лучше в инклюдах хранить.