PHP中大括号之间的文本匹配

PHP中大括号之间的文本匹配,php,regex,plugins,wordpress,Php,Regex,Plugins,Wordpress,在前一篇文章的直接后续部分中,如何使用PHP将文本(以及大括号,如果可能)作为匹配项拉出 具体来说,我正在编写一个Wordpress插件,并希望在两个大括号(一个准维基标记)之间重新格式化所有文本 我已经按照前面我问过的另一个问题中概述的步骤进行了操作,并让匹配的部分正常工作——这就是我需要帮助的匹配 例如: This is some {{text}} and I want to reformat the items inside the curly braces 期望输出: This is

在前一篇文章的直接后续部分中,如何使用PHP将文本(以及大括号,如果可能)作为匹配项拉出

具体来说,我正在编写一个Wordpress插件,并希望在两个大括号(一个准维基标记)之间重新格式化所有文本

我已经按照前面我问过的另一个问题中概述的步骤进行了操作,并让匹配的部分正常工作——这就是我需要帮助的匹配

例如:

This is some {{text}} and I want to reformat the items inside the curly braces
期望输出:

This is some *Text fancified* and I want to reformat the items inside the curly braces
我所拥有的(不起作用的):

$content=preg_replace(“#\b\{{.+\}\b#”,“$0”,$content);

如果匹配包括大括号太困难,我可以使用大括号作为偏移进行匹配,然后使用更简单的文本匹配函数删除“有问题的”大括号。

您需要使用
圆括号
)组成匹配组。

preg\u replace('{{(.+?)\}}}}}',“$1”,
任何
(.+?)
匹配的内容都可以用作替换字符串中的
$1
。这样一来,封闭的{{和}}就已经消失了。而且
\b
是多余的。

$content=preg_replace('/{([^{}]*}}/,“$1”,$content);
$content = preg_replace('/{([^{}]*)}/', "<strong>$1</strong>", $content);

我从未听说过被称为“圆括号”的括号。但除此之外+1@warren:Ronans匹配模式对错误混合的大括号更具弹性。虽然
+?
通常足以匹配尽可能短的字符串,但
[^}]负字符类是一个更专业的习惯用法。在你的例子中,我认为它是可以互换的。你需要改变<代码> {某物}/Cuth>,所以你放了<代码> {<代码> >代码> } /代码>,现在你需要用<代码>(.*)获取里面的内容,但是你不需要里面有什么{或},所以你只需要说。(除{或}之外的任何东西){或}不喜欢[{或}]=^[{{或}]。我很擅长解释事情,只要我完成了工作,
[^{{或}]
就应该是
[^{}]
。字符类中不需要“或”操作符,因此
失去了它的特殊意义,只需要匹配
preg_replace('#\{\{(.+?)\}\}#', "<strong>$1</strong>",
$content = preg_replace('/{([^{}]*)}/', "<strong>$1</strong>", $content);