Jump to content

Вставить в PHP код HTML файл.


Recommended Posts

В общем такая ситуация. Всю голову переломал, или не подходит или не знаю как.

Иммется тема, в которую в файл theme.php входит хедер, футер, блоки и т.д. в формате html.

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

Сперва мучался с баннерами, ибо при вставлении явы в футер, у меня добавлялись слэши и ничего не работало. Кое как разобрался, выкинув все таки eval.

В шапке так сделать не могу.

Ну так вот, имеется скрипт для красивого отображения текстов. Если его вставить в header.html, то код извратится и не работает. Естессно в theme.php его вставить нельзя, ибо все таблицы в хедере.

Не нашел другого выхода, как переменной $messaga присвоить весь этот ява скрипт в theme.phpи и эту переменную в хедер в нужную ячейку. Вот только незнаю как переменной задать это. ПХП я не учил, все делаю аналогично другим примерам, но для такого случая ненашел :D

Или же как нибудь подрихтовать eval чтобы не добавлял слэши или не трогал кусок хтмл.

Изгачально выглядит так

   $tmpl_file = "themes/Green/header.html";$thefile = implode("", file($tmpl_file));$thefile = addslashes($thefile);$thefile = "\$r_file=\"".$thefile."\";";eval($thefile);print $r_file;

В учебнике читал про него, так пробывал поменять, тоже не вышло.

Запасной вариант есть, перевести хедер в пхп и не мучится, но это уже на самый крайний случай, так как таблицы возможно буду еще менять там (их там штук 20друг в друге, плюс ячейки), без визуального редактора просто запутаюсь.

Edited by Alexander-V-Sh
Link to comment
Share on other sites

Лорд Дмитрий:

По всякому пробовал с евалом этим, удалял строки, заменял и т.д. Без строчки $thefile = addslashes($thefile) (как и с другими изменениями) вылетает ошибка,

Иклюдом все отлично, только не работают переменные в header.html. Тоесть не будет в шапке приветсвия пользователя и баннер придется вписывать вручную (у меня выбор сейчас, пользователю привет, гостям баннер :D )

Link to comment
Share on other sites

Лорд Дмитрий:

Учебники я смотрел, не нашел решение, а читать от корки до корки и изучать полностью язык некогда.

Что собственно выкладывать то?

Есть файл PHP, в который вставляется HTML методом:

$tmpl_file = "themes/Green/header.html";$thefile = implode("", file($tmpl_file));$thefile = addslashes($thefile);$thefile = "\$r_file=\"".$thefile."\";";eval($thefile);print $r_file;

В header.html присутствуют пеменные и яваскрипт.

Если вставить header.html кодом (выше), то не работает ява (из-за слэшей)

Если вставить кодом:

include "themes/Green/header.html"

То не работают переменные.

Вот собстенно и все. Делать за меня ничего не надо, просто обьясните, каким путем это можно осуществить, а именно, вставить в PHP код HTML файл, чтобы в хтмл работали переменные и ява.

Link to comment
Share on other sites

Ну вобще переменные должны работать, а если не работают, то на ум приходит только одно, отсеять яву регулярными выражениями, код правда усложнится.

Пишу здесь, люди если ошибусь, поправьте чтоб человек не мучался!

$tmpl_file = "themes/Green/header.html";

$thefile = implode("\r\n", file($tmpl_file));

$thefile = str_replace("<?=", "<? echo ", $thefile);

$thefile = str_replace("<?php", "<?", $thefile);

$thefile_php = eregi_replace("(.*)<\\?(.*)l\\?>(.*)", "\\2", $thefile);

$thefile_php = trim(addslashes($thefile_php));

$thefile_php = "\$r_file=\"$thefile_php\";";

eval($thefile_php);

$thefile = eregi_replace("(.*)<\\?(.*)l\\?>(.*)", "\\1$r_file\\3", $thefile);

print $r_file;

Link to comment
Share on other sites

При отображении страницы перед каждой ' ставится слэш и ява не изображается (ошибка).

Сижу мудрю с eregi_replace, ведь по идеи же можно заменить все слеши "\" на пустое мест. В хтмл их нет вообще, а вот евал ставит.

Ох и мудрая штука эта eregi_replace :) ...

Link to comment
Share on other sites

Alexander-V-Sh: функции ereg* обрабатывают регулярные выражения и к eval не относятся, я просто извлекаю из скрипта пхп код для обработки.

выложи полностью код header.html

Link to comment
Share on other sites

Лорд Дмитрий

Вот код header.html

Скрипт там с выводом сообщений я скорее всего заменю, его ослик не видит, но дело не в самом скрипте, а в его отображении. Сейчас в любой скрипт у меня перед ' слэш втыкается.

В архиве файл самой темы (лишнее выкинул, оставил только для хедера).

Вот в него вставляется header.html и с ним как раз проблема. То слэши добавляет, то не видит переменные...

header.rar

header.rar

Link to comment
Share on other sites

Сижу мудрю с eregi_replace, ведь по идеи же можно заменить все слеши "\" на пустое мест.

С eregi мудрить не надо, используй preg:

Если нужно просто убрать слэши, то делай так:

$out = preg_replace ("'(/)'", "", $in);

Link to comment
Share on other sites

Пардон - не вник в суть дела и посоветовал глупость.

PHP заменяет все символы своего синтаксиса при выводе на их escape-ированные варианты, т.е. вместо ' получится \' и т.д.

Как я понял, надо вырезать бэк-слэши, а не слэши, проще всего сделать это так:

$out = str_replace ("\\", "", $in);

Link to comment
Share on other sites

Разобрался, спасибо Siberex:

Воткнул HTML код инклюдом, а переменные чтоб работали вставил как <?php echo $peremennaya; ?>

Лорд Дмитрий:

Тоже спасибо, что откликнулся!

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...