Я немного закодировал preg в php, чтобы я мог сам написать несколько bbcode.
Поначалу все работало нормально, но я обнаружил, что когда я делаю что-то вроде [b]Stuff stuff [b]and more stuff[/b][/b]
, он выводит что-то вроде Материалы [b]и многое другое[/b]
поскольку я не могу сделать это, это заставить его сначала найти последний из всех близких тегов с помощью [b][/b] в основном для устранения этой проблемы, но, похоже, у меня ничего не работает.
коды работают так
$bbcode = "[b]Stuff stuff [b]and more stuff[/b][/b]";
$bb[] = "#\[b\](.*?)\[/b\]#i";
$html[] = "<b>\\1</b>";
$bbcode = preg_replace($bb, $html, $bbcode);
return $bbcode;
Я попытался заставить его выводить что-то вроде Материалы и многое другое, сделав еще одну строку, например
$bbcode = "[b]Stuff stuff [b]and more stuff[/b][/b]";
$bb[] = "#\[b\]#i";
$html[] = "<b>";
$bb[] = "#\[/b\]#i";
$html[] = "</b>";
$bbcode = preg_replace($bb, $html, $bbcode);
return $bbcode;
Но это не останавливает выполнение чего-либо, что является тупиковым тегом, таким как дополнительный [/b].
Любые идеи о том, как заставить его найти первый [b] и последний [/b] без столкновения с другими новые открытые теги, которые открываются после?
<b>Stuff stuff <b>and more stuff</b></b>
, разве этого недостаточно? - person Breaking not so bad   schedule 17.02.2013