次の HTML 文字列を検討してください。
<p>This is line 1 <br /> and this is line 2</p>
PHP / Regexを使用して、上記を次の文字列に置き換えるにはどうすればよいですか
<p><span class="single-line">This is line 1</span><span class="single-line">and this is line 2</span></p>
実際にそれを行うことはお勧めしませんが (マークアップとクラスを誤用しているため)、実際には非常に単純です。
あなたが交換
<p>
と
<p><span class="single-line">
と
<br />
と
</span><span class="single-line">
そして最後に
</p>
と
</span></p>
文字列を置換できる PHP 関数はstrtr
Docsです。
これは、質問で指定した HTML フラグメントに対してのみ機能することに注意してください。これをより正確にする必要がある場合は、前述のようにDOMDocument
andの使用を検討する必要があります。DOMXPath
これは機能しますが、HTML の解析/変換に正規表現に頼らないことをお勧めします。
$string = '<p>This is line 1 <br /> and this is line 2</p>';
$pattern = '~([^<>]+)<br[[:blank:]]*/?>([^<>]+)~i';
$replacement = '<span class="single-line">$1</span><span class="single-line">$2</span>';
echo preg_replace($pattern, $replacement, $string);