но не получается - в итоге возвращается массив из того что между {{ и }} , без разбития по частям... т.е. он вторую часть регулярки (:.*)* читает не верно. пробовал делать ограничения на разделение но все равно...
п.с.
P1, P2, P3, P4 - произвольные комбинации символов
----- о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
valenok
Отправлено: 20 Декабря, 2009 - 08:47:38
Здесь могла бы быть ваша реклама
Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006 Откуда: Israel
Помог: 3 раз(а)
explode ?
----- Truly yours, Sasha.
Вездеход
Отправлено: 20 Декабря, 2009 - 10:51:54
Частый посетитель
Покинул форум
Сообщений всего: 820
Дата рег-ции: Апр. 2008 Откуда: Россия
Помог: 0 раз(а)
valenok
да, это как вариант вопщем то...
просто не хотел использовать explode, потому что много раз придется его вызывать... боюсь лишней нагрузки
----- о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
valenok
Отправлено: 20 Декабря, 2009 - 11:54:39
Здесь могла бы быть ваша реклама
Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006 Откуда: Israel
Помог: 3 раз(а)
Может тебе вырезать все {x , :x: , x}
а потом удалить дублирующиеся элементы из массива
----- Truly yours, Sasha.
Champion
Отправлено: 20 Декабря, 2009 - 11:55:49
Активный участник
Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008 Откуда: Москва
Помог: 57 раз(а)
Почему много раз? 1 раз explode и trim для первого и последнего элемента. trim со вторым аргументом { и } чтоб эти скобки отрезать.
Вездеход
Отправлено: 20 Декабря, 2009 - 20:38:19
Частый посетитель
Покинул форум
Сообщений всего: 820
Дата рег-ции: Апр. 2008 Откуда: Россия
Помог: 0 раз(а)
Champion пишет:
Почему много раз? 1 раз explode и trim для первого и последнего элемента. trim со вторым аргументом { и } чтоб эти скобки отрезать.
ненене, тут совсем другое дело....
есть текст. в нем могут встречаться шаблоны как те, которые я написал выше.
вот все шаблоны я вытащить могу. а чтобы их сразу корректно на части разбить - не получается...
если в шаблоне (страницы) есть к примеру 20 разных шаблонов - мне 20 раз нужно будет обрабатывать строку которая между фигурными скобками...
потому и нужна регулярка ...
----- о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
trot
Отправлено: 20 Декабря, 2009 - 20:47:37
Новичок
Покинул форум
Сообщений всего: 34
Дата рег-ции: Нояб. 2009
однако выбирает только первое и последнее значение...)
т.е. в последнем примере он взял только Р1 и Р4
----- о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
trot
Отправлено: 20 Декабря, 2009 - 21:02:13
Новичок
Покинул форум
Сообщений всего: 34
Дата рег-ции: Нояб. 2009
Помог: 0 раз(а)
В данном случае второй элемент массива (там где Р4), это тоже массив.
Т.е. в первом элемента массива лежит значение Р1, а во втором элемент лежит массив с элементами от Р2 до всего остального.
Вездеход
Отправлено: 20 Декабря, 2009 - 21:03:57
Частый посетитель
Покинул форум
Сообщений всего: 820
Дата рег-ции: Апр. 2008 Откуда: Россия
Но закомментированная регулярка находит странно, а две следующие... Ну в общем, глянь. Если в них \w заменить на \w+, то почему-то они уже находят меньше... Ща еще попробую до ума довести (Добавление)
(?(?=})(?=}) (?# if next symbol is } then current symbol is } too)
| (?# esle if the next symbol is letter then current symbol is :.)
(?(?=\w)(?=:))
)
)+ /xs',$str,$m);
Находит только первую штуковину. А если убрать утверждение в начале, то находит всё. Но и то, что снаружи {{}} (Добавление) RomAndry Сделай, пожалуйста табулыцию в 4 пробела, а то ужас какой-то, когда она в 8 превращается. Или откуда там такие отсупы берутся... (Добавление)
trot пишет:
Да действительно в РНР запоминается первое и последнее найденное совпадение.
Нет ничего такого в php. Если написать регулярку нормально - запоминаться будет всё. (Добавление)
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.