我目前有这样的bbcode
[caption=Some text goes here]image.jpg[/caption]
我想使用php的preg_match,这样我就可以得到image.jpg的值,不管'caption='旁边是什么。有人可以帮我吗?
原始正则表达式:
]([^\]]+)[/caption]
preg_match("]([^\]]+)[/caption]", myString, $matches)
image.jpg 将在第一组。 $matches[1]
(我不确定我是否在 php 中正确地转义了它)。
您可以使用此正则表达式:
$str = '[caption=Some text goes here]image.jpg[/caption]';
if (preg_match('/^\[[^\]]+]([^[]+)/', $str, $arr))
echo "image: $arr[1]\n";
image: image.jpg
如果要匹配完整的 bbcode 标签,包括标题,请使用
preg_match("/\[caption=(.+)\](.+)\[\/caption\]/", $myString, $matches);
这将产生以下$matches
数组:
Array
(
[0] => [caption=Some text goes here]image.jpg[/caption]
[1] => Some text goes here
[2] => image.jpg
)
正则表达式不是魔术。PHP 已经有一个预制的扩展库来处理 BBCode。
不要重新发明轮子,也不要让自己难过。