0

帮助!我正在做一个替换,它将括号中的块转换为由<div>s 包围的块。请看下文。

编码:

$data = '
<p>
{ 
asdf
asdf
asdf
}
</p>
';

echo preg_replace('%{(.*)}%m', '<div>\1</div>', $data);

输出应该是:

<p>
<div>
asdf
asdf
asdf
</div>
</p>

我在这里做错了什么?

4

3 回答 3

5

使用s修饰符而不是m修饰符。

s修饰符允许.匹配换行符。

m修饰符创建^并匹配单个行的$开始和结束,而不是整个字符串的开始和结束。

旁注:替换的首选语法是<div>$1</div>

于 2013-02-01T01:52:10.343 回答
2

使用s修饰符。

preg_replace('%{(.*)}%s', '<div>\1</div>', $data);
于 2013-02-01T01:52:00.537 回答
1

使用s代替m;

echo preg_replace('~\{(.*)\}~s', '<div>\1</div>', $data);

只是一个建议,转义所有正则表达式专用的字符。

于 2013-02-01T02:26:46.103 回答