Pas*_*TIN 96
我通常会说" 不要使用正则表达式来处理HTML ",但是,就此而言,我可能会使用正则表达式,因为<br>标签通常看起来像:
<br><br/>,在之前有任意数量的空格/
我想这样的事情可以解决这个问题:
$html = 'this <br>is<br/>some<br />text <br />!';
$nl = preg_replace('#<br\s*/?>#i', "\n", $html);
echo $nl;
Run Code Online (Sandbox Code Playgroud)
几个笔记:
<br\s*/:/?>#i),<BR>这在HTML中是有效的您应该使用PHP_EOL常量来获得与平台无关的换行符.
在我看来,尽可能使用非正则表达式函数使代码更具可读性.
$newlineTags = array(
'<br>',
'<br/>',
'<br />',
);
$html = str_replace($newlineTags, PHP_EOL, $html);
Run Code Online (Sandbox Code Playgroud)
我知道这个解决方案有一些缺陷,但仍想分享我的见解.