powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) Проблема с регулярными выражениями
16 сообщений из 16, страница 1 из 1
(PHP) Проблема с регулярными выражениями
    #33152839
Фотография Damnedest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть строка
{%function_name1:param1,{%function_name2:paramX%},param2%}
HTML текст
{%function_name3%}

Необходимо получить только вложенные функции или те, в которых нет никаких вложенных функций.

В данном случае надо получить:
function_name2:paramX
function_name3
...
Рейтинг: 0 / 0
(PHP) Проблема с регулярными выражениями
    #33152922
Ksnk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DamnedestЕсть строка
{%function_name1:param1,{%function_name2:paramX%},param2%}
HTML текст
{%function_name3%}

Необходимо получить только вложенные функции или те, в которых нет никаких вложенных функций.

В данном случае надо получить:
function_name2:paramX
function_name3
Правильно ли я понял, что "вложенные функции" - это кусок текста от "{%" до "%}" в котором не встречается "{%" ?
...
Рейтинг: 0 / 0
(PHP) Проблема с регулярными выражениями
    #33152961
Фотография Damnedest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Совершенно верно
...
Рейтинг: 0 / 0
(PHP) Проблема с регулярными выражениями
    #33152969
.-.-.-.-.-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а у вложенной функции могут быть свои вложенные функции ?
параметры могут модержать символы }{% ?
...
Рейтинг: 0 / 0
(PHP) Проблема с регулярными выражениями
    #33152974
Фотография Damnedest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, у вложенной функции могут быть вложенные функции, параметры могут содержать символы {}%, иначе все просто...
...
Рейтинг: 0 / 0
(PHP) Проблема с регулярными выражениями
    #33152991
.-.-.-.-.-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
тогда как определить что комбинация символов %} принадлежит параметру а не обозначает конец функции ?
...
Рейтинг: 0 / 0
(PHP) Проблема с регулярными выражениями
    #33152996
Фотография Damnedest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот как раз комбинация символов не может присутствовать в параметрах, а сами символы по отдельности могут.
...
Рейтинг: 0 / 0
(PHP) Проблема с регулярными выражениями
    #33153048
Ksnk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DamnedestВот как раз комбинация символов не может присутствовать в параметрах, а сами символы по отдельности могут.
Однако да! Не силен я в регах... Задача решается, к примеру так...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
$x='
{%function_name1:param1,{%function_name2:paramX%},param2%}
HTML текст
{%function_name3%}
';
$m=preg_split("/{%/",$x);
foreach($m as $key=>$val) {
  $i=strpos($val,"%}");
  if (!$i) unset($m[$key]) ; // === falsе или === 0  здесь все едино
  else $m[$key]=substr($val, 0 ,$i);
};
print_r($m);
...
Рейтинг: 0 / 0
(PHP) Проблема с регулярными выражениями
    #33153088
Фотография Damnedest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
$size = preg_match_all("/{%(.*?)%}/", $text, $functions);

for ($i = 0; $i < $size; $i++)
{
if (($open_tag = strrpos($functions[1][$i],"{%"))!==FALSE)
{
$functions[1][$i] = substr($functions[1][$i],$open_tag+2);
}
}
...
Рейтинг: 0 / 0
(PHP) Проблема с регулярными выражениями
    #33153094
Фотография Damnedest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
$size = preg_match_all("/{%(.*?)%}/", $text, $functions);

for ($i =  0 ; $i < $size; $i++)
{
     if (($open_tag = strrpos($functions[ 1 ][$i],"{%"))!==FALSE)
     {
          $functions[ 1 ][$i] = substr($functions[ 1 ][$i],$open_tag+ 2 );
     }
}
...
Рейтинг: 0 / 0
(PHP) Проблема с регулярными выражениями
    #33153963
Фотография Damnedest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
$pattern='/{%(?:(?!(?:%}|{%)).)*%}/';

А можно задать вот такой шаблон.
...
Рейтинг: 0 / 0
(PHP) Проблема с регулярными выражениями
    #33154071
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
Damnedest$pattern='/{%(?:(?!(?:%}|{%)).)*%}/';

А можно задать вот такой шаблон.
http://phpclub.ru/talk/showthread.php?threadid=69593
А можно вас попросить больше никогда не задавать один и тот же вопрос на более чем одном форуме с интервалом менее 3-х дней?
...
Рейтинг: 0 / 0
(PHP) Проблема с регулярными выражениями
    #33154089
Фотография Damnedest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно. Но когда срочно нужно решение, то другово выбора нет :)
...
Рейтинг: 0 / 0
(PHP) Проблема с регулярными выражениями
    #33154157
vfabr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можно вас попросить больше никогда не задавать один и тот же вопрос на более чем одном форуме с интервалом менее 3-х дней?
а в чем собственно проблема?

на этом форуме человеку вменяемого ответа не дали

если только Вас обламывает читать одинаковые вопросы ... так вы не один на этом свете
...
Рейтинг: 0 / 0
(PHP) Проблема с регулярными выражениями
    #33154253
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
vfabrа в чем собственно проблема?В том, что это просто невежливо по отношению к людям - заставлять сотни людей думать над вашими проблемами, когда достаточно 1-2х. Тем более мелкие проблемы немирового уровня.
...
Рейтинг: 0 / 0
(PHP) Проблема с регулярными выражениями
    #33154385
vfabr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
что ж вы уважаемый не ответили? (по вашим словам я понял что вы ответ знали срузу как увидели это сообщение)

а сотням (или даже миллионам) думать уж никак точно не помешает :-)
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) Проблема с регулярными выражениями
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]