ФорумПрограммированиеPHP для идиотов → Группировка подмасок

Группировка подмасок

  • DeAle

    Сообщения: 4 Репутация: N Группа: Кто попало

    Spritz 19 ноября 2009 г. 4:51

    $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
    )

    Удаление пустых значений массива не подойдет
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 24 ноября 2009 г. 13:54, спустя 5 дней 9 часов 2 минуты

    DeAle, метод хуйня, сначала просто вырежи все {…}

    а потом для каждого проexplode данные и получишь нужный результат
    Сапожник без сапог

Пожалуйста, авторизуйтесь, чтобы написать комментарий!