![]() |
|
Модераторы: Aliance, skyboy, MoLeX, ksnk |
![]()
|
|
| DeAle |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 16.9.2009 Репутация: нет Всего: нет |
$data = 'jkdf {hello world} 434 {o lo looooo}';
preg_match_all( '#(?:\{(hello)\s+(world)\})|(?:\{(o)\s+(lo)\s+(looooo)\})#ui', $data, $aa, PREG_SET_ORDER ); вывод: [0] => Array ( [0] => {hello world} [1] => hello [2] => world ) [1] => Array ( [0] => {o lo looooo} [1] => [2] => [3] => o [4] => lo [5] => looooo ) Вопрос: как правильно сгруппировать подмаски, чтобы не было пустых индексов во втором массиве. [1] => [2] => Они появляются из-за (hello)\s+(world) которых второе условие ловит из первого. Необходимо чтобы результат был таким: [0] => Array ( [0] => {hello world} [1] => hello [2] => world ) [1] => Array ( [0] => {o lo looooo} [1] => o [2] => lo [3] => looooo ) Удаление пустых значений массива не подойдет |
|||
|
||||
| patap |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 893 Регистрация: 7.5.2005 Где: Украина, Зп Репутация: 5 Всего: 40 |
При данном раскладе, сдается мне, что такого результата достичь нельзя.
Опиши реальную задачу. Не ужели ты собираешься искать при помощи регулярных выражений статические подстроки, типа hello world? -------------------- На боку кобура болталась, сзади шашка отцовская звякала. Впереди меня все хохотало, а позади все плакало (с) |
|||
|
||||
| DeAle |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 16.9.2009 Репутация: нет Всего: нет |
patap, нет, я к примеру дал hello world и ololo чтобы не загромождать читаемость. В реале таких подмасок несколько которые разные тэги вырезают.
Опиши реальную задачу: Это для шаблонизатора, вместо hello world будет к примеру {(if) условие}{/if} вместо ololo {(include) file} далее данные передаются через callback, функции, которая читает первый ключ [1] и в зависимости от его значения, if или include, работает с остальными данными. Для inlude только два ключа, условие для if создает минимум 5 ключей, 2 из которых создаются пустыми из-за первой подмаски. В итоге их 7 |
|||
|
||||
| patap |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 893 Регистрация: 7.5.2005 Где: Украина, Зп Репутация: 5 Всего: 40 |
приведе полный код, и подробные входные данные. А то лично я пока не могу сути уловить
Может глядя на код и данные ситуация прояснится -------------------- На боку кобура болталась, сзади шашка отцовская звякала. Впереди меня все хохотало, а позади все плакало (с) |
|||
|
||||
| Pitlord |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 246 Регистрация: 31.10.2009 Репутация: нет Всего: 7 |
DeAle, лучше сделайте просто общее выражение типа
Содержимое, в свою очередь, разбивайте по пробелам и передавайте куда надо. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Тексты | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |