ストック PHP5 では、preg_replaceこの変換を行うための適切な表現は次のとおりです。
改行を に置き換えますが、ブロック<br />内のみです<pre>
(単純化する仮定を自由に作成し、コーナー ケースを無視してください。たとえば、タグは 1 行であり、 のような病理学的なものではないと仮定できます)
入力テキスト:
<div><pre class='some class'>1
2
3
</pre>
<pre>line 1
line 2
line 3
</pre>
</div>
出力:
<div><pre>1<br />2<br />3<br /></pre>
<pre>line 1<br />line 2<br />line 3<br /></pre>
</div>
(動機付けのコンテキスト: ウィキメディアの SyntaxHighlight_GeSHI 拡張機能のバグ 20760 を閉じようとしていて、自分の PHP スキル (私は主に Python を使用しています) を見つけるのがうまくいきません)。
私はregexen以外の他のソリューションにもオープンですが、小さい方が好まれます(例として、html解析機構の構築はやり過ぎです)。