| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Тексты > custom bb code |
| Автор: Aliance 30.7.2006, 19:48 | ||||||
| Сделал на форуме ббкод - [hide], а на главную экспортирую новости. Так как это не стандартный ббкод, то в БД он так и хранится - переделывать его приходится вручную. Раньше был формат такой:
И все работало, написал такую регу:
Но теперь модифицировал формат немного, он стал таким:
Как мне изменить мою регу, чтобы в карманы попало либо целиком все вхождение «text1|text2», либо (что предпочтительнее) каждое по отдельности. |
| Автор: Mal Hack 30.7.2006, 21:24 | ||
Я вообще не понимаю, как у тебя первая рега работала. Она в принципе синтаксически не верная.
|
| Автор: Aliance 30.7.2006, 23:51 | ||
| Ну с регами я канечно не дружу, поэтому может понял что не так, но: на сколько мне известно в языке регулярных выражений спец. символы нужно предотвращать обратными слешами. А так же в php обратные слешы в том числе нужно обрамлять ими же. Отсюда и получаются зубочистки, я не прав? Далее, а вот такая рега выдаст мне в два кармана часть в текста в открывающем теге:
ЗЫ: текст многострочный, поэтому модификатор s не подойдет. |
| Автор: Aliance 31.7.2006, 00:34 | ||||||||
Ты слышал о так называемом "синдроме зубочистки"? Он характере для языков, где рег. выр. представленны ввиде обычкновенных строк. Если мы напишем
то увидим выражение глазами PCRE. Ведь строка echo "\\" выведет нам один слеш, правильно?
Модификатор s - однострочный поиск, m - многострочный. Так почему же мне нужен s? Я поставил модификатор x, игнорирующий комментарии м пробелы, для удобочитаемости кода. За код спасибо, тестирую. Добавлено @ 00:39 Вот код, работает как нужно:
|