Неясно, нужно ли вам делать простые preg_replace()
или preg_replace_callback()
(потому что вам " нужно делать другие вещи в коде php ").
Лучшее решение, которое я могу предложить вам сейчас, - это использовать этот шаблон, который требует тегов [dr]
| [/dr]
и разделителя подстрок -
, за которым следуют одна или несколько цифр.
Шаблон: ( Демо )
# ⬐⬐⬐------------⬐⬐⬐⬐--------------- match opening and closing tags
# ↓↓↓↓↓ ↓↓↓↓↓↓↓
~\[dr](.+?)-(\d+)\[/dr]~
# ↑↑↑ ⬑⬑⬑---------------------- capture one or more digits
# ⬑⬑----------------------------- capture one or more of any character
С помощью этих двух захваченных подстрок вы можете использовать preg_replace()
для генерации новой строки динамических замен.
Код: ( Демо )
$bbcode = '[dr]my name here-25[/dr]';
echo preg_replace('~\[dr](.+?)-(\d+)\[/dr]~', '<div>Reply to: <a href="user.php?id=$2">$1</a></div>', $bbcode);
Вывод:
<div>Reply to: <a href="user.php?id=25">my name here</a></div>