使用php(或python)</li>删除<li>标签之间的html换行符

时间:2013-01-04 21:21:03

标签: php python regex html-parsing

我有一个大型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())执行此操作的正则表达式是什么?

2 个答案:

答案 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的已接受答案。