Php preg_replace,正则表达式模式不匹配
Php preg_replace, regex pattern doesn't match
我正在尝试开发一个基本的模板引擎,所以我不得不使用preg_replace。我对以下主题有疑问:
$subject = "{%content%} %content%";
$pattern = '/matched_regex/';
$replace = 'OK';
echo preg_replace($pattern,$replace,$subject);
并且输出必须是这样的:
{%content%} OK
换句话说,它将与 %content%
匹配
我应该怎么做正则表达式模式?
这将仅匹配不在 {
之后或位于主题字符串开头的 %content%
。 %content%
之前的任何字符都与替换字符串中的 </code> 放回:</p>
<pre><code>$subjects = [
'{%content%} %content%',
'Foo {%content%} bar %content% baz',
'Foo{%content%}bar%content%baz',
'Foo{%content%}bar%content%',
'{%content%}%content%',
'%content%{%content%}',
];
$replace = 'OK';
foreach ($subjects as $subject) {
$pattern = '/(^|[^{])%content%/';
echo preg_replace($pattern, ''.$replace, $subject), PHP_EOL;
}
输出:
{%content%} OK
Foo {%content%} bar OK baz
Foo{%content%}barOKbaz
Foo{%content%}barOK
{%content%}OK
OK{%content%}
我正在尝试开发一个基本的模板引擎,所以我不得不使用preg_replace。我对以下主题有疑问:
$subject = "{%content%} %content%";
$pattern = '/matched_regex/';
$replace = 'OK';
echo preg_replace($pattern,$replace,$subject);
并且输出必须是这样的:
{%content%} OK
换句话说,它将与 %content%
我应该怎么做正则表达式模式?
这将仅匹配不在 {
之后或位于主题字符串开头的 %content%
。 %content%
之前的任何字符都与替换字符串中的 </code> 放回:</p>
<pre><code>$subjects = [
'{%content%} %content%',
'Foo {%content%} bar %content% baz',
'Foo{%content%}bar%content%baz',
'Foo{%content%}bar%content%',
'{%content%}%content%',
'%content%{%content%}',
];
$replace = 'OK';
foreach ($subjects as $subject) {
$pattern = '/(^|[^{])%content%/';
echo preg_replace($pattern, ''.$replace, $subject), PHP_EOL;
}
输出:
{%content%} OK
Foo {%content%} bar OK baz
Foo{%content%}barOKbaz
Foo{%content%}barOK
{%content%}OK
OK{%content%}