Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Построение шаблона с php кодом 
V
    Опции темы
xoslv
Дата 21.10.2008, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 12.1.2007

Репутация: нет
Всего: нет



Доброго времени суток, любимый Винград!
Не буду долго писать, спрошу коротко и на сколько можно понятней.
Есть шаблон:
Код

some text here .... %%[(defined(SITE) ? "ok" : "hacking atempt")]%% some text here...

Выводится это всё элементарно, примерно так:
Код

$content = stripslashes($result['content']);
print $content;


Как сделать, чтобы значение, находящееся между %%[ и ]%% выполнелось как PHP код, именно в той части шаблона, где оно указанно?

Зарание благодарю за помощь!
--------------------
Не всё то маздай, что синее!
PM MAIL ICQ   Вверх
Валерия
Дата 21.10.2008, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 10.3.2007

Репутация: нет
Всего: 8



реги + eval
PM MAIL   Вверх
skyboy
Дата 21.10.2008, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 8
Всего: 260



Цитата(Валерия @  21.10.2008,  16:47 Найти цитируемый пост)
реги + eval 

ага. если быть точным, можно обойтись preg_replace + модификатор e. 
PM MAIL   Вверх
HackMan
Дата 21.10.2008, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Юзверь-программист
**


Профиль
Группа: Участник
Сообщений: 391
Регистрация: 18.6.2005
Где: .ua

Репутация: нет
Всего: 9



А мне кажется, что у человека сложность не в том, как выполнить код, а в том, как его выполнить именно в той части текста, где он находится. 
Что бы в результате было не
Код

some text here ....  some text here...hacking atempt

а
Код

some text here .... hacking atempt some text here...



--------------------

Завтра - это самый загруженный день недели smile

user posted image

user posted image
PM MAIL ICQ   Вверх
xoslv
Дата 21.10.2008, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 12.1.2007

Репутация: нет
Всего: нет



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

Т.е., имея в шаблоне некий код %%[(defined(SITE) ? "ok" : "hacking atempt")]%% 
Для чтения шаблона, мне надо:
Код

$content = stripslashes($result['content']);
$content = preg_replace("(%%\[)","<?=",$content);
 
???? Что-то я с этой регуляркой не дружу... 
Можно попросить образец кода в студию?
--------------------
Не всё то маздай, что синее!
PM MAIL ICQ   Вверх
skyboy
Дата 21.10.2008, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 8
Всего: 260



Цитата(HackMan @  21.10.2008,  18:27 Найти цитируемый пост)
А мне кажется, что у человека сложность не в том, как выполнить код, а в том, как его выполнить именно в той части текста, где он находится. 

так, а preg_replace с модификаторов e сделает что?

PM MAIL   Вверх
xoslv
Дата 22.10.2008, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 12.1.2007

Репутация: нет
Всего: нет



Вобщем, пробую я так:
Код

$content = stripslashes($result['content']);
$content = preg_replace("/(%\[)(.*)(\]%)/e","'\\1'.\\2.'\\3'",$content);

шаблон такой:
Код

some text here %[(defined(SITE) ? 'treu ' : 'false ')]% some text here...

ошибка в логе при этом такая:
Код

PHP Fatal error:  preg_replace() [<a href='function.preg-replace'>function.preg-replace</a>]: Failed evaluating code: \n'%['.(defined(SITE) ? \\'true \\' : \\'false \\').']%' in **** on line ***

--------------------
Не всё то маздай, что синее!
PM MAIL ICQ   Вверх
skyboy
Дата 22.10.2008, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 8
Всего: 260



Цитата(xoslv @  22.10.2008,  10:03 Найти цитируемый пост)
ошибка в логе при этом такая:

то есть по тексту ошибки не видно, что пытаешься ты выполнять
Код

%[(defined(SITE) ? 'treu ' : 'false ')]%
?
PM MAIL   Вверх
xoslv
Дата 22.10.2008, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 12.1.2007

Репутация: нет
Всего: нет



В данном примере я пытаюсь елементарно вывести надпись TRUE или FALSE, но меня смущают слэши....
Как от них избавиться, пока незнаю!
 smile  smile 
--------------------
Не всё то маздай, что синее!
PM MAIL ICQ   Вверх
xoslv
Дата 23.10.2008, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 12.1.2007

Репутация: нет
Всего: нет



Ну почти нашёл решение, правда, не совсе то, что я хотел....
вот код движка:
Код

                $module = ( SITE ? 'ok ' : 'false ');
    $content = stripslashes($result['content']);
    $content = preg_replace("/(.*)(%%)(.*)(%%)(.*)/e","'\\1'.$$3.'\\5'",$content);
                print $content;

а вот так выглядит шаблон:
Код

some text here %%module%% some text here.....


Но сам вопрос остаётся открытым, какже сделать, чтобы можно было писать условия прямо в шаблоне?
Если изменить регулярку, то можно просто в шаблоне написать %%SITE%% и он отобразит содержимое... Но никак не пойму что сделать с условием....  smile 
--------------------
Не всё то маздай, что синее!
PM MAIL ICQ   Вверх
sTa1kEr
Дата 23.10.2008, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 5
Всего: 146



Код

preg_replace("/%%\[(.*?)\]%%/e", "\\1", $content);


Цитата(xoslv @  22.10.2008,  13:17 Найти цитируемый пост)
но меня смущают слэши....

\"Кавычки \". Как избавится от слешей.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.0763 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.