Разбить текст по пробелам вне тегов

Тема в разделе "Регулярные выражения", создана пользователем metrod, 7 апр 2009.

Статус темы:
Закрыта.
Модераторы: xpert13
  1. metrod

    metrod Создатель

    Регистр.:
    29 дек 2007
    Сообщения:
    21
    Симпатии:
    1
    Помогите пожалуйста с регуляркой для preg_split... В общем надо разбить текст по пробелам. Но пробелы есть и в тегах (атрибуты) - вот их как раз не надо учитывать. То есть...

    Исходный текст:
    HTML:
    <b style="color: red">машина едет по улице <i>Московской</i></b>
    Должен получиться массив:
    HTML:
    [0] - <b style="color: red">машина
    [1] - едет
    [2] - по
    [3] - улице
    [4] - <i>Московской</i></b>
    Как реализовать?

    Есть такой вариант - [^\s<>]\s+(?![^<>]*>)... Близко к истине, но не работает :)
     
  2. hib

    hib Постоялец

    Регистр.:
    4 окт 2007
    Сообщения:
    86
    Симпатии:
    17
    Не знаю близок ли к истине, но у меня на исходном примере работает :)
    HTML:
    (\<(.*?)\>)?(\S*)
     
  3. metrod

    metrod Создатель

    Регистр.:
    29 дек 2007
    Сообщения:
    21
    Симпатии:
    1
    увы этот вариант у меня на реальном тексте выдает массив с множеством пустых значений, стало быть не работает... у меня есть вариант с циклом for, но хотелось бы через регулярку это дело решить :)
     
  4. RolCom

    RolCom

    Регистр.:
    12 мар 2008
    Сообщения:
    351
    Симпатии:
    108
    У тебя вариант почти рабочий:)
    Код:
    \s+(?![^<>]*>)
     
  5. metrod

    metrod Создатель

    Регистр.:
    29 дек 2007
    Сообщения:
    21
    Симпатии:
    1
    Действительно :) Как говорится истина где-то рядом :D Спасибо что просвятили...
     
Статус темы:
Закрыта.