1

次の 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>
4

2 に答える 2

1

実際にそれを行うことはお勧めしませんが (マークアップとクラスを誤用しているため)、実際には非常に単純です。

あなたが交換

<p>

<p><span class="single-line">

<br />

</span><span class="single-line">

そして最後に

</p>

</span></p>

文字列を置換できる PHP 関数はstrtrDocsです。

これは、質問で指定した HTML フラグメントに対してのみ機能することに注意してください。これをより正確にする必要がある場合は、前述のようにDOMDocumentandの使用を検討する必要があります。DOMXPath

于 2012-04-04T08:29:03.037 に答える
1

これは機能しますが、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);
于 2012-04-04T08:33:46.163 に答える