-1 / 0 / 0
Регистрация: 17.08.2015
Сообщений: 38
1

Составление регулярного выражения

14.09.2015, 20:12. Показов 1398. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет.
Есть теги
PHP
1
{group=8}Какой то текст{/group}
Они разумеется в tpl файле который достаётся функцией в php файле.
Задача распознать какая цифра введена в group=X

Для этого собираюсь составить регулярное выражение которое будет распознавать теги {group=Любое_ЧИСЛО}{/group}
Затем присвоить это число скажем переменной $name1
Ну а далее уже делать с этим числом что угодно.

Например условие "если группа пользователя == $name1, заменяем всё между {group=$name1} и {/group} на '' "
Таким образом скрывая контент от определённой группы пользователей.

Проблема в том, что я не могу никак составить выражение которое
будет распознавать теги {group=Любое_ЧИСЛО}{/group}
Помогите мне сделать это.
0
Лучшие ответы (1)
14.09.2015, 20:12
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.09.2015, 20:12
Ответы с готовыми решениями:

Понимание регулярного выражения
Добрый день ув. пользователи! Подскажите пожалуйста, что значит эта запись. preg_match_all('/(.+?)\s?\{\s?(.+?)\s?\}/'

Формат регулярного выражения
$text = preg_replace('!\b({1,3})\b!u', '<strong><span style="color:red">\\0</span></strong>', $text); Почему надо использовать тег b для...

Написание регулярного выражения
// /(+)/ Друзья,что значат эти выражения,подскажите пожалуйста? Друзья,так же подскажите как написать такой формат регулярного...

10
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
14.09.2015, 22:34 2
hihihiman, зачем делать свой велосипедшаблонизатор, когда есть уже полно готовых, протестированных, проверенных в реальных проектах. Задача сама по себе не простая.
0
99 / 46 / 18
Регистрация: 09.08.2015
Сообщений: 367
14.09.2015, 23:12 3
Цитата Сообщение от Jewbacabra Посмотреть сообщение
когда есть уже полно готовых
Например PHP и JS.

Цитата Сообщение от hihihiman Посмотреть сообщение
Для этого собираюсь составить регулярное выражение которое будет распознавать теги
И тратить на себя время если tpl в php не закэшировать.

Цитата Сообщение от hihihiman Посмотреть сообщение
Таким образом скрывая контент от определённой группы пользователей.
С чем справится банальный if или чуть менее банальная функция, ну или если уж совсем оригинальничать то класс.

Цитата Сообщение от hihihiman Посмотреть сообщение
Проблема в том
Что люди пишут шаблонизаторы потому, что это модно. Есть конструктивные соображения зачем этот шаблонизатор или просто потому что нужен? Если уж так сильно хочется разделить интерфейс и логику на разные ЯП чем жабаскрипт не угодил? Все уже даже "скачено и настроено".
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
14.09.2015, 23:27 4
AncientPenguin, в принципе в написании собственного шаблонизатора нет ничего плохого. Во многих случаях создание собственного велосипеда - в первую очередь полезный опыт для себя. Но при этом нужно понимать, что задача не простая, и вот так "на коленке" 1 регуляркой ее не решить.
0
99 / 46 / 18
Регистрация: 09.08.2015
Сообщений: 367
15.09.2015, 00:23 5
Jewbacabra, плохое есть в использовании шаблонизатора просто потому, что так написано в учебнике. Возможно человеку просто хочется другой синтаксис и есть свободное время, но я хотел донести мысль, что у шаблонизатора должна быть причина. Делать его просто потому что надо (а так многие наверняка делают, как с MVC) это глупость.
0
-1 / 0 / 0
Регистрация: 17.08.2015
Сообщений: 38
15.09.2015, 01:41  [ТС] 6
Цитата Сообщение от AncientPenguin Посмотреть сообщение
Jewbacabra, плохое есть в использовании шаблонизатора просто потому, что так написано в учебнике. Возможно человеку просто хочется другой синтаксис и есть свободное время, но я хотел донести мысль, что у шаблонизатора должна быть причина. Делать его просто потому что надо (а так многие наверняка делают, как с MVC) это глупость.
Во первых что за оффтоп? Ни одного совета не увидел.
Во вторых больше минусов мне!
Теперь по делу.

Я изучаю язык и мне необходим опыт.
Мне необходимы знания о том, как решают задачи разные люди, что более, а что менее эффективно, в каких ситуациях.

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

И насколько я читал, все называют шаблонизатором гнилую биомассу с своей логикой...
Мне же хочется для себя разделить документ на код и шаблоны.
При чём в шаблоне я не желаю видеть никаких действий кроме пожалуй определения групп.
И то, мне это необходимо сейчас лишь потому, что я не знаю как это реализовать и хочу узнать.

К тому же, разве я говорил о оптимизации кода, о том зачем он мне вообще нужен?
Вроде бы не говорил. Поэтому далее в этой теме я прошу исключить советы подобные
И тратить на себя время если tpl в php не закэшировать.
Если об этом никто явно не спрашивал. Это не экзамен на котором стоит блеснуть знаниями

Это в принципе всё что я хотел сказать по поводу твоих мне замечаний.
И не стоит отвечать мне рассказывая о том как я не прав и как ты хорош.
Потому что это называется офтоп. И если ты будешь офтопить в этой теме - у твоей мамы отклеятся уши.
Поэтому хватит нести чушь и втирать разного рода дичь. Приятного времени суток.

А теперь, может быть кто нибудь поможет мне в моей задаче?
Повторюсь, необходимо узнать число X указанное в подключаемом к PHP файлу шаблоне
HTML5
1
{group=Любое_ЧИСЛО}{/group}
Желательно при помощи регулярного выражения.
Но если есть иные, дельные предложения - буду рад выслушать.
0
99 / 46 / 18
Регистрация: 09.08.2015
Сообщений: 367
15.09.2015, 03:42 7
Лучший ответ Сообщение было отмечено hihihiman как решение

Решение

Цитата Сообщение от hihihiman Посмотреть сообщение
Во первых что за оффтоп? Ни одного совета не увидел.
Совет подумать: "Нужен ли шаблонизатор".

Цитата Сообщение от hihihiman Посмотреть сообщение
Мне необходимы знания о том, как решают задачи разные люди, что более, а что менее эффективно, в каких ситуациях.
Я их и написал. В частности: "Шаблонизатор не нужен если ты не знаешь за чем он нужен".

Цитата Сообщение от hihihiman Посмотреть сообщение
Мне же хочется для себя разделить документ на код и шаблоны.
Самый простой вариант - include, самый правильный - javascript.

Цитата Сообщение от hihihiman Посмотреть сообщение
При чём в шаблоне я не желаю видеть никаких действий кроме пожалуй определения групп.
...в данный момент.

Цитата Сообщение от hihihiman Посмотреть сообщение
К тому же, разве я говорил о оптимизации кода, о том зачем он мне вообще нужен?
Чтобы понять что шаблонизатор одними регуляркми не кончится.

Цитата Сообщение от hihihiman Посмотреть сообщение
А теперь, может быть кто нибудь поможет мне в моей задаче?
"/(?:\{group=)([0-9]+)(?:\})(.*?)(?:\{\/group\})/m" = регулярка
$1 = \\1 = нужная цифра
$2 = \\2 = текст между тегами
Не проверял.

Не по теме:

Цитата Сообщение от hihihiman Посмотреть сообщение
И если ты будешь офтопить в этой теме - у твоей мамы отклеятся уши.
И тебе добра. Кстати у нее уже ничего отклеиться не может физически.

1
-1 / 0 / 0
Регистрация: 17.08.2015
Сообщений: 38
15.09.2015, 12:31  [ТС] 8
Да, это именно то что мне нужно. Через пару часов буду тестить. Спасибо.

Цитата Сообщение от AncientPenguin Посмотреть сообщение
Самый простой вариант - include, самый правильный - javascript.
Что ты имел ввиду? Ведь JS исполняется на стороне клиента.

Насчёт include, я впринципе набросал функцию которая склеивает 2 одноимённых php файла из разных папок по запросу site.domen/name_page.html
И да, действительно. Вполне себе можно использовать один файл для действий, а другой для разметки.
Но мне неприятен вопрос чисто эстетический.
Я конечно понимаю что многие здесь любят чистый php, но мне неприятно писать большие страницы вида
HTML5
1
<title><? echo $title; ?></title>
Мне нравится DLE. Ну то есть сам по себе двиг конечно хорош, но он слишком неудобно написан и его постоянно приходится перекраивать под себя, поэтому я и считаю его в целом - неудобным говнищем.
Это что касается CMS в целом. Вы не подумайте ребят, я не вчера с юкоза ушёл.
p.s.Позавчера
Но мне нравится в DLE то как там реализованы шаблоны.
Достаточно простого
HTML5
1
<title>{title}</title>
Да, здесь нет особой разницы, но когда страницы большие или их много - так писАть становится не удобно.

Но опять же повторюсь, мне не нужна своя логика в шаблоне.
Я когда то видел как для dle написали модуль if else...
Так вот, мне даже определение групп не нужно в реальном коде.
Но реализовать это ради опыта я хочу. Своими силами.

И вот ещё что.
Гуру php, расскажите мне о том, как всё же лучше читать файл шаблона?
Есть функция читающая его через буфер.
А можно запихать его в переменную, но я читал о том, что переменная хранит значения в оперативке.
Что буквально говорит мне
При больших страницах и приличном количестве посетителей - сайт будет лежать.
Эй, парень. Это плохо отразится в боевой ситуации.
Здесь, AncientPenguin, можешь дать свой совет. Мне действительно интересно твоё мнение на этот счёт.
Есть конечно ещё идея читать его как текстовый файл, но мне кажется это очень долго.


А так же, мне интересно узнать что вы, люди, думаете о инклудах?
Скажем склеил я 2 файла. В первом работает код, в втором преимущественно вывод.
Что дальше? Как вывести красиво? Или только?
HTML5
1
<title><? echo $title; ?></title>
Просьба никаких библиотек и шаблонизаторов НЕ предлагать.

А, да, ну и плюсик этому Джентльмену.
Цитата Сообщение от AncientPenguin Посмотреть сообщение
"/(?:\{group=)([0-9]+)(?:\})(.*?)(?:\{\/group\})/m" = регулярка
$1 = \\1 = нужная цифра
$2 = \\2 = текст между тегами
Кстати я не говорил что это ТЫ минусанул меня. Это сделал другой, плохой человек.
0
99 / 46 / 18
Регистрация: 09.08.2015
Сообщений: 367
15.09.2015, 13:27 9
Цитата Сообщение от hihihiman Посмотреть сообщение
Что ты имел ввиду? Ведь JS исполняется на стороне клиента.
А интерфейс кому показывается?

Цитата Сообщение от hihihiman Посмотреть сообщение
<title><? echo $title; ?></title>
PHP
1
2
3
echoTitle($title);
или
$page->title($title);
Цитата Сообщение от hihihiman Посмотреть сообщение
А можно запихать его в переменную, но я читал о том, что переменная хранит значения в оперативке.
После отработки PHP формируется HTML файл и отправляется клиенту, переменные очистятся.
0
-1 / 0 / 0
Регистрация: 17.08.2015
Сообщений: 38
15.09.2015, 14:27  [ТС] 10
Цитата Сообщение от AncientPenguin Посмотреть сообщение
После отработки PHP формируется HTML файл и отправляется клиенту, переменные очистятся.
Ну это понятно как дважды два. Но суть в том, что если будет много подключений - сайт упадёт или как минимум будет тормозить из-за большого количества генирации страниц.

А вот о
Цитата Сообщение от AncientPenguin Посмотреть сообщение
echoTitle($title);
или
$page->title($title);
поподробнее.

В том же DLE похожая реализация.
$page->title($title) Это класс? А затем функция?

Или всё это ты советуешь мне вставить в второй php файл? (в котором я планирую делать вывод)

В общем объяснись. Мне кажется это интересно)
0
99 / 46 / 18
Регистрация: 09.08.2015
Сообщений: 367
16.09.2015, 05:51 11
Цитата Сообщение от hihihiman Посмотреть сообщение
Но суть в том, что если будет много подключений - сайт упадёт или как минимум будет тормозить из-за большого количества генирации страниц.
Цитата Сообщение от AncientPenguin Посмотреть сообщение
тратить на себя время если tpl в php не закэшировать.

Цитата Сообщение от hihihiman Посмотреть сообщение
поподробнее.
Ну тут простор для фантазии большой. У меня в классе Page все функции шаблонизатора, а в метод main инклудится примерно такой "шаблон":

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
 
$this->loadStyle('layout');
 
?>
 
<html>
<head>
<?php $this->echoHead(); ?>
</head>
<body>
<div class="back">
<div class="page">
    <div class="widget header">
        <?php $this->loadWidget('header'); ?>
    </div>
    <div class="widget content">
        <?php $this->content(); ?>
    </div>
    <div class="widget footer">
        <?php $this->loadWidget('footer'); ?>
    </div>
</div>
</div>
</body>
</html>
Можно много чего еще придумать.
0
16.09.2015, 05:51
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.09.2015, 05:51
Помогаю со студенческими работами здесь

Разбор регулярного выражения
Здравствуйте. Проблема такая: пытаюсь зарегистрироваться на китайском сайте, номер телефона не проходит валидацию. Вытянул из исходников...

Жадность регулярного выражения
Привет. Вот пишу лабу, и никак не пойму, в чем проблема. Код: $pattern = &quot;/&gt;.*?&quot; . $words . &quot;.*?&lt;/&quot;; ...

Зависает проверка регулярного выражения
Зависает проверка регулярного выражения (среда перестаёт отвечать). Выражение (проверка формата email):...

Ошибка составления регулярного выражения
Господа, делаю парсинг ВК, получаю страницу нужно вытащить. Строку (оповещение о том во сколько человек заходил в вк) Сама строка в куче...

Помогите в написание регулярного выражения
Здравствуйте. Не могу правильно написать регулярку. Задание : из данного тега -&lt;a id=&quot;news_255164&quot;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Опции темы

Новые блоги и статьи
Запрет подсветки выделения текста с помощью CSS
hw_wired 12.02.2025
Выделение текста - одна из базовых возможностей взаимодействия пользователя с контентом на веб-странице. Однако в некоторых случаях стандартное поведение выделения может нарушать задуманный дизайн. . .
Выполнение другой программы из приложения Python
hw_wired 12.02.2025
При разработке современных приложений часто возникает потребность в запуске и взаимодействии с другими программами прямо из кода. Python предоставляет множество эффективных средств для выполнения. . .
Отличия между let и var в JavaScript
hw_wired 12.02.2025
Работа с переменными - один из основных моментов при написании программ на JavaScript. От правильного объявления и использования переменных зависит не только читаемость кода, но и его надежность, а. . .
Подключение файла JavaScript в других файлах JavaScript
hw_wired 12.02.2025
Самый современный и рекомендуемый способ подключения JavaScript-файлов - использование системы модулей ES6 с ключевыми словами 'import' и 'export'. Этот подход позволяет явно указывать зависимости. . .
Отмена изменений, не внесенных в индекс Git
hw_wired 12.02.2025
Управление изменениями в Git - одна из важнейших задач при разработке программного обеспечения. В процессе работы часто возникают ситуации, когда нужно отменить внесенные изменения, которые еще не. . .
Что такое px, dip, dp, and sp в Android
hw_wired 12.02.2025
При разработке мобильных приложений для Android одним из ключевых вызовов становится адаптация интерфейса под различные устройства. А ведь их действительно немало - от компактных смартфонов до. . .
Отличия POST и PUT в HTTP
hw_wired 12.02.2025
В основе современного интернета лежит протокол HTTP, который определяет правила взаимодействия между клиентами и серверами. Этот протокол предоставляет набор методов, позволяющих клиентам выполнять. . .
Перемещение последних коммитов в новую ветку Git
hw_wired 12.02.2025
В процессе разработки иногда возникает ситуация, когда последние изменения в основной ветке нужно переместить в отдельную ветку разработки. Может оказаться, что вы внесли несколько коммитов в ветку. . .
GraphQL в Go (Golang)
stackoverflow 11.02.2025
В веб-разработке традиционные REST API постепенно уступают место более гибким и эффективным решениям. GraphQL - мощное средство для создания гибких API, которое позволяет клиентам запрашивать именно. . .
GraphQL и TypeScript
stackoverflow 11.02.2025
В мире современной веб-разработки GraphQL прочно занял место одного из самых перспективных подходов к созданию API. Этот язык запросов, созданный для оптимизации взаимодействия между клиентом и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru