- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Тренды маркетинга в 2024 году: мобильные продажи, углубленная аналитика и ИИ
Экспертная оценка Адмитад
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Здравствуйте.
Пишу шаблонизатор под локальную систему.
Есть строка {stylesheet:general,test,styles}, она может быть и {stylesteet:test}, и просто {stylesheet}. Т.е. идет инклуд либо файла по умолчанию, либо одного файла из директории с темой, либо множественный инклуд (предварительно объединив в один).
Так вот, нужно одним регулярным выражением определить в коде эту строку ({stylesheet...) и заодно в matches занести инклуд либо список инклудов (без запятых в отдельный массив).
Вот выражение для одного инклуда
^"{stylesheet[:]?([a-z0-9]{0,24})}"^
как дополнить его, чтобы в матчес попадали и другие (т.е. что после запятой).
Шаблонизатор работает примерно так:
^"{stylesheet[:]?([a-z0-9,]{0,24})?}"^
siv1987, читайте внимательно. Нужно чтобы оно не просто с запятой захватило, а захватило все значения что перечислены через запятую в отдельный массив в $matches.
Кто-нибудь слышать об рекурсивном поиске с помощью r: ?
Нужно чтобы оно не просто с запятой захватило, а захватило все значения что перечислены через запятую в отдельный массив в $matches.
Что мешает разбить строку в массив используя delimiter ','? Или я действительно не понимаю о чем речь
кстати да, фиг скобки нужно экранировать
^"\{stylesheet[:]?([a-z0-9,]{0,24})?\}"^
Ну а одной регуляркой не обойтись?
Сделал пока explode(), но может кто-то таки знаком с рекурсивным поиском в регулярном выражении?
Ну а одной регуляркой не обойтись?
А у вас их сколько, не одно разве? И чем explode не угодил?
но может кто-то таки знаком с рекурсивным поиском в регулярном выражении?
На php-клубе не советуют из юзать, правда, темка старая.
Регулярки должны быть простые и понятные, зачем усугублять их рекурсией :)
PS: "Эту проблему я решу с помощью регулярного выражения, решил программист.
С этого момента у него стало на одну проблему больше."
siv1987, чтобы без explode сразу в массив matches попадали все значения через запятую.
чтобы без explode сразу в массив matches попадали все значения через запятую.
А зачем? Если красота кода волнует, то есть другие места, заслуживающие внимания..
Ускорить? Спорно.. рекурсивная регулярка vs explode вряд ли выйдет победителем.
Just For Fun? так это.. самому надо, а не других озадачивать
Что-то пропустил?
ivan-lev, но я и так уже прибегаю к регулярному выражению, зачем еще плодить explode если можно дописать выражение?
но я и так уже прибегаю к регулярному выражению, зачем еще плодить explode если можно дописать выражение?
Плодить говно-выражения конечно же лучше, чем использовать одну строчку кода explode как все нормальные люди.
А рекурсии здесь нет, рекурсия применяется к вложенности.