如何在Wordpress样式的短代码中提取字符串?

时间:2015-04-05 00:07:15

标签: regex wordpress preg-replace preg-match

对于Regex专家来说,这可能是微不足道的。可悲的是,那不是我。

给出以下字符串:text:

这是一个段落和[callout]这是系统的测试[/ callout]。

我想使用preg_match()和/或preg_replace来创建以下

<div class="callout">this is a test</div>

这就是我现在的位置......

$content = 'Here is a paragraph and [callout]this is a test[/callout] of the system.';
$pattern = "/[callout](.*?)[\/callout]/s";
$matches = array();
preg_match($pattern, $content, $matches);
var_dump($match[0]); 

......我遇到的问题是上面的模式似乎包含标签,即

[callout]this is a test[/test]

......我错过了什么?

TIA,

2 个答案:

答案 0 :(得分:1)

尝试使用此正则表达式,

\[callout\](.*?)\[\/callout\]

来自this is a test

capture the group Here is a paragraph and [callout]this is a test[/callout] of the system

Working Demo

答案 1 :(得分:1)

你应该逃避方括号:

$pattern = "~\[callout\](.*?)\[/callout\]~s";

正如preg_match引用所说:

  

如果提供了匹配,那么它将填充搜索结果。 $matches[0]将包含与完整模式匹配的文本,$matches[1]将具有与第一个捕获的带括号的子模式匹配的文本,依此类推。

您可以在$matches[1]中找到所需的文字。