"Рукурсивные" регулярные выражения

kenred

Новичок
"Рукурсивные" регулярные выражения

Пишу свои схему для замены BB кодов..
использую примерно такую строку

$str = preg_replace("'\[B\]((.|\n)*?)\[/B\]'i","<span class='FormatBold'>\\1</span>", $str);

Текст вида "[В] моя строка [/В]" обрабатывается нормально...
а если у меня что то типа" [В] моя [В]строка[/В][/В]" то получается жирная надпись "моя [В]строка[/В]"
как заставить чтобы все обрабатывалось правильно? а то я уже что-то запутался :(
 

SiMM

Новичок
> а если у меня что то типа" &#91;В] моя &#91;В]строка&#91;/В]&#91;/В]" то получается жирная надпись "моя &#91;В]строка&#91;/В]"

А с текстом вида "&#91;b]раз &#91;i] два &#91;/b] три&#91;/i]" Вы что делать собрались?
 

Garret

Кто здесь?
А что тяжелого? Это же примитивные бб коды. Прошол первый раз, заменил [ b]:
<b>раз [ i] два </b> три[/ i]
Потом заменить [ i]:
<b>раз <i> два </b> три</i>

-~{}~ 14.03.07 16:38:

типа проверять что в тексте еще есть bb коды ?
Ну а ты как думаешь?

-~{}~ 14.03.07 16:39:

Провтыкал что товарищь их спанами оформляет.

-~{}~ 14.03.07 16:45:

Советую юзать простые структуры, <b>, <i>, <u>...
 

kenred

Новичок
Ну а ты как думаешь?
ну я просто боялся что это мягко говоря не самый быстрый способ..

Провтыкал что товарищь их спанами оформляет
ну так решили те кто больше занимаются версткой и т.д. мне пофигу если честно :)
 

Garret

Кто здесь?
Если хочешь сделать вложеные бб коды то тебе не должно быть пофиг.

-~{}~ 14.03.07 16:56:

Посмотри также эту тему, может почерпнешь что то полезное для себя http://phpclub.ru/talk/showthread.php?s=&threadid=88631&rand=43
 

WP

^_^
Отвечает Александр Друзь.

Товарищ из Ташкента не знает регулярок.

PHP:
$s = ' ['.'B] моя ['.'B]строка[/'.'B][/'.'B]';
function bbcode_processor_callback($m)
{
 $tag = strtolower($m[1]);
 var_dump($m);
 if ($tag == 'b' or $tag == 'i' or $tag == 'u') {return '<'.$tag.'>'.bbcode_processor($m[2]).'</'.$tag.'>';}
}
function bbcode_processor($s)
{
 return preg_replace_callback('~\[([biu])\]((?:(?R)|.)*?)\[/\1\]~si','bbcode_processor_callback',$s);
}
echo bbcode_processor($s);
/*
<b> моя <b>строка</b></b>
*/
Банальный пример на коленке.

-~{}~ 14.03.07 18:11:

p.s. давно предлогал заменить парсер ббкода на этом форуме на нормальный. чтоб при написании смайло-подобных последовательностей внутри тега php у людей не возникало рвотного чувства.
 

boombick

boombick.org
чтоб при написании смайло-подобных последовательностей внутри тега php у людей не возникало рвотного чувства.
Чтобы такого чувства не возникало, надо всего лишь пользоваться тегом
PHP:
 

boombick

boombick.org
WP
и что ты этим сказать хотел-то? Или очередная газификация небольшой впадины в асфальте, заполненной водой?
 

WP

^_^
boombick
Я опроверг твое утверждение.
> Или очередная газификация небольшой впадины в асфальте, заполненной водой?
Куда клонится этот базар? Андрейка 2? Любители попи..
 

phprus

Moderator
Команда форума
boombick
WP
Господа не ссорьтесь. Или выясняйте свои отношения в привате чтобы не нарушать правила форума.
 

SiMM

Новичок
> А что тяжелого?
Если Вы не заметили, то код невалидный.
 
Сверху