Forum Webscript.Ru
Программирование => PHP => Тема начата: 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 дклать. Она хоть и шустрая, однако кой чего не понимает. Например на выводит элементы классового массива, а вместо этого пишет банальное Array.
-
ThE0ReTiC
А как по другому?
-
Ну, как минимум, определиться, где ты все-таки,хранишь код - в инклюдах, или в базе.
-
html код лучше в инклюдах хранить.