За последние 24 часа нас посетили 34954 программиста и 1712 роботов. Сейчас ищут 923 программиста ...

preg_split с флажком

Тема в разделе "PHP для новичков", создана пользователем Argentum, 7 фев 2011.

  1. Argentum

    Argentum Активный пользователь

    С нами с:
    31 окт 2007
    Сообщения:
    24
    Симпатии:
    0
    Адрес:
    Москва
    Привет тебе, о неустрашимый All!

    Есть задачка: взять строчку текста и разбить её на массив, притом разделителями должны быть HTML-тэги, и сами эти тэги должны попасть в массив. То есть, если имеем строчку:
    Код (Text):
    1. Однажды в <b>студёную</b>, <i>зимнюю пору<i> я из лесу вышел - был <u>сильный мороз</u>!
    то в итоге должны получить массив со следующими строками:
    Код (Text):
    1. Однажды в
    2. <b>
    3. студёную
    4. </b>
    5. ,
    6. <i>
    7. зимнюю пору
    8. <i>
    9.  я из лесу вышел - был
    10. <u>
    11. сильный мороз
    12. </u>
    13. !
    У функции preg_split есть флажок PREG_SPLIT_DELIM_CAPTURE. Сама эта функция разбивает строчку по разделителю-шаблону, притом если данный флажок указан, то по идее она должна и сам разделитель заталкивать в массив. Я обрадовался, попробовать применить этот флажок, но меня ждало разочарование. Функция не только не затолкала разделитель в массив, но и вообще большую часть строки не разобрала.
    Подскажите, как мне подойти к решению этой задачи. Какую функцию ни пробую, постоянно косяк. То шаблоны (т.е. HTML-тэги) от меня уплывают, то часть строки остаётся неразобранной, то невозможно текст справа или слева от тэга ухватить.
     
  2. Mamont

    Mamont Активный пользователь

    С нами с:
    5 дек 2010
    Сообщения:
    183
    Симпатии:
    0
    PHP:
    1. <?php
    2. $words = preg_split( '/(<[^>]+>)/', $str, -1, PREG_SPLIT_DELIM_CAPTURE );
     
  3. Argentum

    Argentum Активный пользователь

    С нами с:
    31 окт 2007
    Сообщения:
    24
    Симпатии:
    0
    Адрес:
    Москва
    Спасибо! :) Я был так близок к истине... а про limit забыл.