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
Форумы портала PHP.SU :: Версия для печати :: Поиск тегов и обработка
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » Поиск тегов и обработка

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

1. neatek - 02 Декабря, 2014 - 14:47:53 - перейти к сообщению
Здравствуйте..
Пытаюсь сделать простую обработку тегов в шаблоне
Вот допустим 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.  

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

Мне интересно как бы Вы написали обработку.
С чего бы начали, и какие бы функции использовали.
Спасибо.
2. DeepVarvar - 02 Декабря, 2014 - 16:26:56 - перейти к сообщению
Я бы выкинул нафик все эти велосипеды и использовал сам пхп как парсер шаблонов с его родным синтаксисом.
3. neatek - 03 Декабря, 2014 - 18:20:12 - перейти к сообщению
DeepVarvar пишет:
Я бы выкинул нафик все эти велосипеды и использовал сам пхп как парсер шаблонов с его родным синтаксисом.

то есть Вы предлагаете мешать PHP и HTML? В использовании это не удобно.
4. Viper - 03 Декабря, 2014 - 18:33:08 - перейти к сообщению
neatek ну возьмите Twig уж на худой конец.
5. Мелкий - 03 Декабря, 2014 - 18:53:45 - перейти к сообщению
neatek пишет:
то есть Вы предлагаете мешать PHP и HTML? В использовании это не удобно.

Нет, речь о использовании нативного шаблонизатора.
В использовании никакой разницы между
{%if foo()%}
{%foo%}
{%/if%}
и
<?if ($foo):?>
<?=$foo?>
<?endif?>
нету.
6. neatek - 03 Декабря, 2014 - 19:02:02 - перейти к сообщению
Viper пишет:
neatek ну возьмите Twig уж на худой конец.

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

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

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

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

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

PS. Нативный шаблон на php заинтересовал Хм Я даже и не задумывался... Не понял Попытаюсь сделать на нём. Весь движок->Запуск обработки шаблона->общий шаблон->Условия подключения модулей и.т.д.. Получается нужно инклудить php Файлы друг в друга с HTML и кусками php. Не понял
7. Мелкий - 03 Декабря, 2014 - 19:10:16 - перейти к сообщению
neatek пишет:
рассматривать другие точки зрения надо и нужно.

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

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

Любые материалы класса "пишем простой язык программирования".
http://habrahabr[dot]ru/post/140058/ , например, серия статей http://habrahabr[dot]ru/post/99162/
8. neatek - 03 Декабря, 2014 - 19:15:28 - перейти к сообщению
Мелкий пишет:
Давно уже рассмотрены. Теме PHP vs шаблонизатор на PHP уже даже не 10 лет, больше.

Возможно она и более 10 лет, но я не рассматривал это как "PHP vs шаблонизатор на PHP", а сразу просто решил сделать что-то своё. В общем спасибо за информацию, ведь форумы для этого и нужны. Можно закрывать тему. Спасибо всем кто писал.

 

Powered by ExBB FM 1.0 RC1