Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Поиск тегов и обработка

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
neatek
Отправлено: 02 Декабря, 2014 - 14:47:53
Post Id



Гость


Покинул форум
Сообщений всего: 113
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




Здравствуйте..
Пытаюсь сделать простую обработку тегов в шаблоне
Вот допустим HTML:
CODE (html):
скопировать код в буфер обмена
  1. <html>{%if_user_more_0%} asds {%endif%}asdada {%if_user_more_1%} asdasd{%endif%}</html>

Вот я попытался обработчик написать:
PHP:
скопировать код в буфер обмена
  1.  
  2.         $again = true;
  3.         $analys = $TEMPLATE;
  4.         do {
  5.                 $x = strpos($analys, '{%');
  6.                 $y = strpos($analys, '%}');
  7.  
  8.                 if($x === false)
  9.                 {
  10.                         $again = false; // прекращаем анализ если нету тегов
  11.                 }
  12.                 else
  13.                 {
  14.                         if($y != false)
  15.                         {
  16.                                 $condition = substr($analys, $x, $y);
  17.                                 $analys = str_replace($condition,'',$analys);
  18.                         }
  19.                 }
  20.         } while ($again == true);
  21.  

В моей версии заложена суть поиска {% и %} потом берем полностью что между ними. И все равно косяк получается вот тут : $y = strpos($analys, '%}');
Вывод результата:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. x: 6, y: 22, i: , {%if_user_more_0%} asd
  3. x: 8, y: 15, i: , {%endif%}asdada
  4. x: 9, y: 25, i: , {%if_user_more_1%} asdasd
  5. x: 9, y: 16, i: , {%endif%}</html>
  6.  

Как видно он получает еще то, что после %}.

Мне интересно как бы Вы написали обработку.
С чего бы начали, и какие бы функции использовали.
Спасибо.
 
 Top
DeepVarvar Супермодератор
Отправлено: 02 Декабря, 2014 - 16:26:56
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Я бы выкинул нафик все эти велосипеды и использовал сам пхп как парсер шаблонов с его родным синтаксисом.
 
 Top
neatek
Отправлено: 03 Декабря, 2014 - 18:20:12
Post Id



Гость


Покинул форум
Сообщений всего: 113
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




DeepVarvar пишет:
Я бы выкинул нафик все эти велосипеды и использовал сам пхп как парсер шаблонов с его родным синтаксисом.

то есть Вы предлагаете мешать PHP и HTML? В использовании это не удобно.
 
 Top
Viper
Отправлено: 03 Декабря, 2014 - 18:33:08
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




neatek ну возьмите Twig уж на худой конец.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Мелкий Супермодератор
Отправлено: 03 Декабря, 2014 - 18:53:45
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




neatek пишет:
то есть Вы предлагаете мешать PHP и HTML? В использовании это не удобно.

Нет, речь о использовании нативного шаблонизатора.
В использовании никакой разницы между
{%if foo()%}
{%foo%}
{%/if%}
и
<?if ($foo):?>
<?=$foo?>
<?endif?>
нету.


-----
PostgreSQL DBA
 
 Top
neatek
Отправлено: 03 Декабря, 2014 - 19:02:02
Post Id



Гость


Покинул форум
Сообщений всего: 113
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




Viper пишет:
neatek ну возьмите Twig уж на худой конец.

На худой) И в правду. Если сравнить Twig и Smarty, на первый взгляд, не углубляясь в возможности, чисто на файловом уровне - Twig больше Smarty Однако

Я наоборот пытаюсь как можно меньше всего использовать, мне такие здоровенные штуки не нужны. Проще написать распознавалку тегов, потом чтение тегов, и выполнение определенных действий при встрече в теге условий в последующей генерацией HTML кода.

Возможно я конечно же не прав. У всех свои взгляды, но рассматривать другие точки зрения надо и нужно.

Кстати, тему я создал для помощи в реализации распознавания тегов, а не для "вот парниш посмотри какой здоровенный шаблонизатор", или "вот сюда зайди - скачай". Опыт приходит только с изобретения велосипеда.

Да простят меня за мою дерзость, если Вы так посчитаете.

PS. Нативный шаблон на php заинтересовал Хм Я даже и не задумывался... Не понял Попытаюсь сделать на нём. Весь движок->Запуск обработки шаблона->общий шаблон->Условия подключения модулей и.т.д.. Получается нужно инклудить php Файлы друг в друга с HTML и кусками php. Не понял

(Отредактировано автором: 03 Декабря, 2014 - 19:10:53)

 
 Top
Мелкий Супермодератор
Отправлено: 03 Декабря, 2014 - 19:10:16
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




neatek пишет:
рассматривать другие точки зрения надо и нужно.

Давно уже рассмотрены. Теме PHP vs шаблонизатор на PHP уже даже не 10 лет, больше.

neatek пишет:
в реализации распознавания тегов

Любые материалы класса "пишем простой язык программирования".
http://habrahabr[dot]ru/post/140058/ , например, серия статей http://habrahabr[dot]ru/post/99162/


-----
PostgreSQL DBA
 
 Top
neatek
Отправлено: 03 Декабря, 2014 - 19:15:28
Post Id



Гость


Покинул форум
Сообщений всего: 113
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




Мелкий пишет:
Давно уже рассмотрены. Теме PHP vs шаблонизатор на PHP уже даже не 10 лет, больше.

Возможно она и более 10 лет, но я не рассматривал это как "PHP vs шаблонизатор на PHP", а сразу просто решил сделать что-то своё. В общем спасибо за информацию, ведь форумы для этого и нужны. Можно закрывать тему. Спасибо всем кто писал.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB