preg_replace замена шаблона

IBSN

Новичок
preg_replace замена шаблона

Приветствую!

Подскажите к preg_replace выражение, которое позволит
из
Код:
...
- раз<br>
- два<br>
- три<br>
...
изменить в
Код:
...
<UL>
<LI> раз</LI>
<LI> два</LI>
<LI> три</LI>
</UL>
...
мои действия:

PHP:
"'([-]+)(.*?)(<br>)+'","<UL><LI>\\2</LI></UL><br>"
Это максимум на что я додумался :rolleyes:

подскажите, пожалуйста. :confused:
 

sage

Новичок
бред
далее... о несохраняющих круглых скобках слышал??? Для чего тратить время и ресурсы на сохранение текста, совпавшего в скобках, если далее этот текст не используется??? Ты вообще тестил своё выражение??? Вот если бы тестил, то заметил бы, что даже при твоём выражении получается абсолютно не тот результат, который тебе нужен, хотя это хорошо видно из самого выражения(ты заменяешь текст, совпавший со второй скобкой на <ul><li>...</li></ul>)

а вот правильное выражение:
PHP:
echo "<UL>";
$str = preg_replace("~(?:-+\s*)(.+?)(?:<br>)+~i", "<LI>\\1</LI>", $str);
echo $str;
echo "</UL>";
 

Profic

just Profic (PHP5 BetaTeam)
sage
контрольный пример:
- один<br>
- два<br>
- четыре, ксати предыдущий - третий - забыли<br>
 

IBSN

Новичок
никак нельзя отдельный вывод УЛ, нужно регулркой решить это...
 

sage

Новичок
Profic
и что ты хочешь получить из этого контрольного примера??? Вот это???
Код:
<UL>
<LI>один</LI>
<LI>два</LI>
<LI>третий</LI>
<LI>четыре</LI>
</UL>
Хорошо, вот когда получишь, покажешь... я буду очень рад за тебя... :) Самое главное при написании любого выражения - знание контекста. IBSN привёл код, - я написал выражение. Я ж не телепат, чтоб перебирать в уме все возможности расположения слов, тэгов и т.д. и т.п. Для кода, который привёл IBSN всё работает нормально. И не надо ничего придумывать! Зачем писать громадное выражение, если в тексте нет такого примера, который привёл ты????

IBSN

никак нельзя отдельный вывод УЛ, нужно регулркой решить это...
почему нельзя???
 

IBSN

Новичок
sage
такая задача, то что привел ты то я и сам могу написать, но я обратился с вопросом который мне не по силам...
Объясню еще разок:

у меня есть код:
текст текст текст
- раз<br>
- два<br>
- три<br>
текст текст текст

вообщем все нормально но меня не устраивает список ввиде -, я хочу сформировать из этого кода чтото вроде этого:

текст текст текст
<UL>
<LI> раз<br>
<LI> два<br>
<LI> три<br>
</UL>
текст текст текст

условие, должно получится ОДНО выражение, я так понимаю регуляркам глубоко насрать на строки они ищут ОТ и ДО тоесть можно написать выражение которое будет искать первый символ - потом слово и затем <br> но если заменять построчно то получается такая лажа:

<UL>
<LI> раз<br>
</UL>
<UL>...

надеюсь я объяснил понятно... раньше ни разу не использовал регулярки (ну ни надо было) а сейчас решил ознакомится и вот встал в тупик... подскажите...
 

Profic

just Profic (PHP5 BetaTeam)
IBSN
preg_replace_callback единственное, что тебе может помочь.
Т.е. вначале находишь все свои строки, а потом в callback-е их об-li-ваешь :)
 
Сверху