PHP正则表达式替换wordpress短代码标签

时间:2014-04-16 22:02:42

标签: php regex preg-replace

我有一个短代码,我希望能够根据帖子的上下文去掉。例如

[tooltip slug="test"]Test Text[/tooltip]

我希望输出为:

<span class="dummy">Test Text</span>

我已经用preg_replace进行了实验(很多!)我似乎无法让它认识到替换字符串在']'之间,然后由'[/ tooltip]'分隔而不进行多次传递。< / p>

想法?

更新:正如经常发生的那样,在我写完这篇文章后大约10秒钟,我的一次尝试似乎有效。我不认为它和下面的解决方案一样好,但FWIW ......

$my_var .= preg_replace('/(?:\[tooltip slug=\"([^\"]*)"[^\>]*\]([^\<]*)\[\/tooltip\])/', '<span class="dummy">\\2</span>', $my_post->post_content);

2 个答案:

答案 0 :(得分:3)

这是您正在寻找的简单正则表达式。

$result = preg_replace('%\[tooltip slug="[^"]*"]([^[]*)\[/tooltip]%',
          '<span class="dummy">\1</span>', $subject);

我们在这里做的是捕获工具提示标签之间的文本,并将其插入替换中。 如果您需要任何细节,请告诉我。

答案 1 :(得分:0)

$test = preg_match('/\[([^\]]+)\]([^\[]+)\[/', '[tooltip slug="test"]Test Text[/tooltip]', $matches);

echo $matches[2];