如何替换包含结构化内容的自定义 bbcode 标签?
How to replace custom bbcode tag containing structured content?
我有一个这样的字符串:"[dr]azAZ09-09[/dr]"
示例:[dr]my name here-25[/dr]
我要获取所有元素:
my name here
-
25
如何编写 preg_split()
表达式(或其他函数)?
不清楚你是否需要做一个简单的preg_replace()
或preg_replace_callback()
(因为你“需要在php代码中做其他事情").
我现在可以为您提供的最佳解决方案是使用需要 [dr]
|[/dr]
标记和 -
子字符串定界符后跟一个或多个数字的模式。
模式:(Demo)
# ⬐⬐⬐------------⬐⬐⬐⬐--------------- match opening and closing tags
# ↓↓↓↓↓ ↓↓↓↓↓↓↓
~\[dr](.+?)-(\d+)\[/dr]~
# ↑↑↑ ⬑⬑⬑---------------------- capture one or more digits
# ⬑⬑----------------------------- capture one or more of any character
使用这两个捕获的子字符串,您可以使用 preg_replace()
生成新的动态替换字符串。
代码:(Demo)
$bbcode = '[dr]my name here-25[/dr]';
echo preg_replace('~\[dr](.+?)-(\d+)\[/dr]~', '<div>Reply to: <a href="user.php?id="></a></div>', $bbcode);
输出:
<div>Reply to: <a href="user.php?id=25">my name here</a></div>
我有一个这样的字符串:"[dr]azAZ09-09[/dr]"
示例:[dr]my name here-25[/dr]
我要获取所有元素:
my name here
-
25
如何编写 preg_split()
表达式(或其他函数)?
不清楚你是否需要做一个简单的preg_replace()
或preg_replace_callback()
(因为你“需要在php代码中做其他事情").
我现在可以为您提供的最佳解决方案是使用需要 [dr]
|[/dr]
标记和 -
子字符串定界符后跟一个或多个数字的模式。
模式:(Demo)
# ⬐⬐⬐------------⬐⬐⬐⬐--------------- match opening and closing tags
# ↓↓↓↓↓ ↓↓↓↓↓↓↓
~\[dr](.+?)-(\d+)\[/dr]~
# ↑↑↑ ⬑⬑⬑---------------------- capture one or more digits
# ⬑⬑----------------------------- capture one or more of any character
使用这两个捕获的子字符串,您可以使用 preg_replace()
生成新的动态替换字符串。
代码:(Demo)
$bbcode = '[dr]my name here-25[/dr]';
echo preg_replace('~\[dr](.+?)-(\d+)\[/dr]~', '<div>Reply to: <a href="user.php?id="></a></div>', $bbcode);
输出:
<div>Reply to: <a href="user.php?id=25">my name here</a></div>