#php #bbcode
#php #bbcode
Вопрос:
у меня есть этот код в качестве моего bbcode
[box=title|id]
text
[/box]
не я хочу php-код, который учитывает [box] tage в моем коде и перечисляет его как таблицу содержимого
пример
[box=overview of the code|overview]
texttexttext
[/box]
[box=download of the code|download]
texttexttext
[/box]
я хочу, чтобы код создавал карту или таблицу содержимого типа <a href="#id">title</a>
<a href="#overview">overview of the code</a>
<a href="#download">download of the code</a>
Комментарии:
1. Итак, какие у вас вопросы? Мы здесь не для того, чтобы писать код, который вы хотите для вас, мы здесь, чтобы помочь, когда вы застряли.
Ответ №1:
Напишите синтаксический анализатор. Вы могли бы использовать регулярные выражения, но это становится уродливым.
Я думаю, что это примерно настолько конкретно, насколько я могу быть, без необходимости писать ни одной строки кода: D
Комментарии:
1. моя проблема с регулярными выражениями в php, пожалуйста, попробуйте мне помочь
2. Я знаю, именно поэтому вам следует написать синтаксический анализатор 😉 Синтаксические анализаторы, как правило, также быстрее, чем регулярные выражения.
Ответ №2:
Вы ищете preg_replace в вашей строке:
preg_replace( "/[box=([^|]*)|(w*)][sw]*[/box]/", "<a href='#$2'>$1></a>", $yourString );
Скобки в регулярном выражении «захватят» строку внутри, и вы сможете ссылаться на них с помощью $index (отсюда $ 1 и $ 2 в разделе замены кода).
Комментарии:
1. Если вы передадите всю вашу строку BBCode целиком, она вернет строку из всех тегов <a>, как вы и просили.