-2

HTMLテキストの大規模なデータセットがあり、タグ内に不要な、場合によっては複数の<br>改行が含まれていることがよくあります。<li>

例えば:

<li>Some string here<br></li><br><li>Another string here<br><br></li><br>

間に<br>表示されるこれらを削除し、タグの外側を含む他のすべてを保持したいと思います。上記のテキストは次のようになります。<li></li><br><li>

<li>Some string here</li><br><li>Another string here</li><br>

phpのpreg_replace()(またはpythonのre.sub())でこれを行うための正規表現は何ですか?

4

2 に答える 2

2

PHP Simple HTML DOMパーサーを使用すると、これを簡単に実現できます(jQueryのように)

include('simple_html_dom.php');
$html = str_get_html('<li>Some string here<br></li><br><li>Another string here<br><br></li><br>');
foreach($html->find('li br') as $br){
    $br->outertext='';
}
echo $html;

出力は次のようになります

<li>Some string here</li><br>
<li>Another string here</li><br>
于 2013-01-04T21:38:38.877 に答える
0

で置き換える(<br>)+</li></li>、少なくとも li コンテンツの最後にある改行が処理されます。これで十分かもしれません。そうしないと、 <li>s には他<li>の s が含まれることがあるため、目の前に、正規表現では簡単に解決できない (そして、正規表現だけではまったく解決できない可能性がある) かなり難しいタスクが待ち受けている可能性があります。この質問に対する受け入れられた回答を参照してください。

于 2013-01-04T21:28:29.083 に答える