0

ヘルプ!角かっこで囲まれたブロックを sで囲まれたブロックに変換する置換を行ってい<div>ます。下記を参照してください。

コード:

$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 に答える