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

  • Автор темы Автор темы IBSN
  • Дата начала Дата начала

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

а вот правильное выражение:
PHP:
echo "<UL>";
$str = preg_replace("~(?:-+\s*)(.+?)(?:<br>)+~i", "<LI>\\1</LI>", $str);
echo $str;
echo "</UL>";
 
sage
контрольный пример:
- один<br>
- два<br>
- четыре, ксати предыдущий - третий - забыли<br>
 
никак нельзя отдельный вывод УЛ, нужно регулркой решить это...
 
Profic
и что ты хочешь получить из этого контрольного примера??? Вот это???
Код:
<UL>
<LI>один</LI>
<LI>два</LI>
<LI>третий</LI>
<LI>четыре</LI>
</UL>

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

IBSN

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

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

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

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

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

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

надеюсь я объяснил понятно... раньше ни разу не использовал регулярки (ну ни надо было) а сейчас решил ознакомится и вот встал в тупик... подскажите...
 
IBSN
preg_replace_callback единственное, что тебе может помочь.
Т.е. вначале находишь все свои строки, а потом в callback-е их об-li-ваешь :)
 
Сверху