GET_SHORTCODE_regex()只与第一个短码匹配

时间:2011-08-15 作者:Ian Dunn

法典中有an example 使用get\\u shortcode\\u regex()检查是否在给定页面上调用了短代码:

$pattern = get_shortcode_regex();
preg_match(\'/\'.$pattern.\'/s\', $posts[0]->post_content, $matches);
if (is_array($matches) && $matches[2] == \'YOURSHORTCODE\') {
    //shortcode is being used
}
不过,这只检测帖子内容中的第一个短代码。这是get\\u shortcode\\u regex()的错误,还是可以调整preg\\u match()参数以使其返回页面上存在的所有短代码?

1 个回复
最合适的回答,由SO网友:Rarst 整理而成

从…起PHP docs (重点矿山):

preg_match() 返回模式匹配的次数。这将是0次(不匹配)或1次,因为preg_match() will stop searching after the first match. preg_match_all() 相反,它会一直持续到主题的结尾。

结束

相关推荐

ShortCode and extra </p>

[box id=“1”text=“一些文本”]短代码在某一点上是输出文本html结果为:</p> some text </p>开头有一个额外的结束段落,结尾有一个开头。。。为什么?这些是从哪里来的?。。。。有什么想法吗?。。它搞砸了我的w3验证!**注意我发现。。。但在我看来,一切都“修补”了。。。任何干净的溶液。。。wp脏了吗?reference