我有一个短代码,我希望能够根据帖子的上下文去掉。例如
[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);
答案 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];