ヘルプ!角かっこで囲まれたブロックを 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);
そして、アドバイスとして、正規表現に特別なすべての文字をエスケープしてください。