我有一个大型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())执行此操作的正则表达式是什么?
答案 0 :(得分:2)
使用PHP Simple HTML DOM Parser可以轻松实现这一点(就像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>
答案 1 :(得分:0)
将(<br>)+</li>
替换为</li>
至少会在li内容的末尾处理换行符,这对您来说可能已经足够了。否则,由于<li>
s有时包含其他<li>
s,你可能面临一项非常困难的任务,用regexp无法轻易解决(也许根本不能单独用regexp解决),请参阅this question的已接受答案。