У меня есть строка как эта: "[dr]azAZ09-09[/dr]"
Пример: [dr]my name here-25[/dr]
Я хочу получить все элементы:
my name here
-
25
Как я могу написать preg_split()
выражение (или другая функция)?
Неясно, нужно ли делать простую 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>
Других решений пока нет …