0

我目前有这样的bbcode

[caption=Some text goes here]image.jpg[/caption]

我想使用php的preg_match,这样我就可以得到image.jpg的值,不管'caption='旁边是什么。有人可以帮我吗?

4

4 回答 4

1

原始正则表达式:

]([^\]]+)[/caption]

preg_match("]([^\]]+)[/caption]", myString, $matches)

image.jpg 将在第一组。 $matches[1] (我不确定我是否在 php 中正确地转义了它)。

于 2012-06-05T21:23:23.260 回答
1

您可以使用此正则表达式:

$str = '[caption=Some text goes here]image.jpg[/caption]';
if (preg_match('/^\[[^\]]+]([^[]+)/', $str, $arr))
   echo "image: $arr[1]\n";

输出

image: image.jpg
于 2012-06-05T21:25:32.690 回答
0

如果要匹配完整的 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
)
于 2017-08-29T09:10:53.853 回答
-1

正则表达式不是魔术。PHP 已经有一个预制的扩展库来处理 BBCode。

不要重新发明轮子,也不要让自己难过。

于 2012-06-05T21:26:10.343 回答