救命!我正在做一个替换,将一个括号内的块转换为一个被 <div>
s 包围的块。 请看下文。
代码:
$data = '
<p>
{
asdf
asdf
asdf
}
</p>
';
echo preg_replace('%{(.*)}%m', '<div>'1</div>', $data);
输出应为:
<p>
<div>
asdf
asdf
asdf
</div>
</p>
我在这里做错了什么?
使用 s
修饰符而不是 m
修饰符。
s
修饰符允许.
匹配换行符。
m
修饰符使^
和$
匹配各个行的开头和结尾,而不是整个字符串的开头和结尾。
旁注:替换的首选语法是<div>$1</div>
使用 s
修饰符。
preg_replace('%{(.*)}%s', '<div>'1</div>', $data);
使用 s
而不是 m
;
echo preg_replace('~'{(.*)'}~s', '<div>'1</div>', $data);
只是一个建议,转义所有对正则表达式特别的字符。