Alexander-V-Sh Опубликовано 4 апреля, 2006 Жалоба Поделиться Опубликовано 4 апреля, 2006 (изменено) В общем такая ситуация. Всю голову переломал, или не подходит или не знаю как. Иммется тема, в которую в файл 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друг в друге, плюс ячейки), без визуального редактора просто запутаюсь. Изменено 5 апреля, 2006 пользователем Alexander-V-Sh Ссылка на комментарий Поделиться на другие сайты Поделиться
Ф@РТОВЫЙ Опубликовано 5 апреля, 2006 Жалоба Поделиться Опубликовано 5 апреля, 2006 Попробуй вместо eval использовать функцию include А слеши добовляет строчка $thefile = addslashes($thefile); если сам слеши растовляешь, то она не нужна Ссылка на комментарий Поделиться на другие сайты Поделиться
Alexander-V-Sh Опубликовано 5 апреля, 2006 Автор Жалоба Поделиться Опубликовано 5 апреля, 2006 Лорд Дмитрий: По всякому пробовал с евалом этим, удалял строки, заменял и т.д. Без строчки $thefile = addslashes($thefile) (как и с другими изменениями) вылетает ошибка, Иклюдом все отлично, только не работают переменные в header.html. Тоесть не будет в шапке приветсвия пользователя и баннер придется вписывать вручную (у меня выбор сейчас, пользователю привет, гостям баннер :D ) Ссылка на комментарий Поделиться на другие сайты Поделиться
Ф@РТОВЫЙ Опубликовано 5 апреля, 2006 Жалоба Поделиться Опубликовано 5 апреля, 2006 Alexander-V-Sh: А ты не пробовал взять учебник по PHP и почитать? А если очень лень, то выкладывай всё как есть, может помогу чем Ссылка на комментарий Поделиться на другие сайты Поделиться
Alexander-V-Sh Опубликовано 5 апреля, 2006 Автор Жалоба Поделиться Опубликовано 5 апреля, 2006 Лорд Дмитрий: Учебники я смотрел, не нашел решение, а читать от корки до корки и изучать полностью язык некогда. Что собственно выкладывать то? Есть файл 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 файл, чтобы в хтмл работали переменные и ява. Ссылка на комментарий Поделиться на другие сайты Поделиться
Ф@РТОВЫЙ Опубликовано 6 апреля, 2006 Жалоба Поделиться Опубликовано 6 апреля, 2006 Ну вобще переменные должны работать, а если не работают, то на ум приходит только одно, отсеять яву регулярными выражениями, код правда усложнится. Пишу здесь, люди если ошибусь, поправьте чтоб человек не мучался! $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; Ссылка на комментарий Поделиться на другие сайты Поделиться
Alexander-V-Sh Опубликовано 6 апреля, 2006 Автор Жалоба Поделиться Опубликовано 6 апреля, 2006 При отображении страницы перед каждой ' ставится слэш и ява не изображается (ошибка). Сижу мудрю с eregi_replace, ведь по идеи же можно заменить все слеши "\" на пустое мест. В хтмл их нет вообще, а вот евал ставит. Ох и мудрая штука эта eregi_replace :) ... Ссылка на комментарий Поделиться на другие сайты Поделиться
Ф@РТОВЫЙ Опубликовано 8 апреля, 2006 Жалоба Поделиться Опубликовано 8 апреля, 2006 Alexander-V-Sh: функции ereg* обрабатывают регулярные выражения и к eval не относятся, я просто извлекаю из скрипта пхп код для обработки. выложи полностью код header.html Ссылка на комментарий Поделиться на другие сайты Поделиться
Alexander-V-Sh Опубликовано 8 апреля, 2006 Автор Жалоба Поделиться Опубликовано 8 апреля, 2006 Лорд Дмитрий Вот код header.html Скрипт там с выводом сообщений я скорее всего заменю, его ослик не видит, но дело не в самом скрипте, а в его отображении. Сейчас в любой скрипт у меня перед ' слэш втыкается. В архиве файл самой темы (лишнее выкинул, оставил только для хедера). Вот в него вставляется header.html и с ним как раз проблема. То слэши добавляет, то не видит переменные... header.rar header.rar Ссылка на комментарий Поделиться на другие сайты Поделиться
Siberex Опубликовано 8 апреля, 2006 Жалоба Поделиться Опубликовано 8 апреля, 2006 Сижу мудрю с eregi_replace, ведь по идеи же можно заменить все слеши "\" на пустое мест. С eregi мудрить не надо, используй preg: Если нужно просто убрать слэши, то делай так: $out = preg_replace ("'(/)'", "", $in); Ссылка на комментарий Поделиться на другие сайты Поделиться
Siberex Опубликовано 8 апреля, 2006 Жалоба Поделиться Опубликовано 8 апреля, 2006 Пардон - не вник в суть дела и посоветовал глупость. PHP заменяет все символы своего синтаксиса при выводе на их escape-ированные варианты, т.е. вместо ' получится \' и т.д. Как я понял, надо вырезать бэк-слэши, а не слэши, проще всего сделать это так: $out = str_replace ("\\", "", $in); Ссылка на комментарий Поделиться на другие сайты Поделиться
Alexander-V-Sh Опубликовано 8 апреля, 2006 Автор Жалоба Поделиться Опубликовано 8 апреля, 2006 Разобрался, спасибо Siberex: Воткнул HTML код инклюдом, а переменные чтоб работали вставил как <?php echo $peremennaya; ?> Лорд Дмитрий: Тоже спасибо, что откликнулся! Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти