ヘルプ!角かっこで囲まれたブロックを sで囲まれたブロックに変換する置換を行ってい<div>ます。下記を参照してください。
コード:
$data = '
<p>
{
asdf
asdf
asdf
}
</p>
';
echo preg_replace('%{(.*)}%m', '<div>\1</div>', $data);
出力は次のようになります。
<p>
<div>
asdf
asdf
asdf
</div>
</p>
ここで何が間違っていますか?
ヘルプ!角かっこで囲まれたブロックを sで囲まれたブロックに変換する置換を行ってい<div>ます。下記を参照してください。
コード:
$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);
そして、アドバイスとして、正規表現に特別なすべての文字をエスケープしてください。