我有一个来自数据库的字符串,并且写得不正确:
$string = " <P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN <br />style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt"><SPAN <br />style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt">M</SPAN>.Of. <br />nr. 1 din 5 ianuarie 1998</SPAN></P><SPAN <br />style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt"><br /><P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN <br />style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt"><FONT <br />color=#0000ff>NOTA ETO a se vedea: 1) Regulamentele</FONT> <A <br />href="doc:910013103/33">nr. 131/1991, <A <br />href="doc:1010117203/2">1172/2001, <A <br />href="doc:1050089003/2">890/2005.</SPAN></P><br /><P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN <br />style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt"> <br /><FONT color=#0000ff>2) Norme metodologice <A <br />href="doc:1020012755/5">nr.127/2002.</FONT></SPAN></P><br /><P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN <br />style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt"><FONT <br />color=#0000ff> 3) Metodologie <A <br />href="doc:1070064010/25">nr.640/2007. </FONT></P><br /> ";
我在其他代码中有<br />
个标签,我不知道如何删除br
我尝试使用正则表达式
$no_br = preg_replace('/(.*<.*)<br \/>(^.*>.*)/i',"$1 $2",$string);
但它不起作用
我不想删除所有<br />
,只删除标记内的内容
我已经使用$string = str_replace(array("\r\n", "\r", "\n" ), "<br />", $row['val'] );
将\ n转换为breakline,因为我在移动应用的webview中使用此文本
答案 0 :(得分:1)
用换行符
替换<br/>
标记
$string = preg_replace("#<br\s*/?>#i", "\n", $string);
答案 1 :(得分:0)
使用此:
preg_replace('/(<br[\s]?[\/]?>[\s]*){3,}/', '<br /><br />', $string);
或
$string=preg_replace("{(<br[\\s]*(>|\/>)\s*){2,}}i", "<br /><br />", $string);
$string=preg_replace("{(<br[\\s]*(>|\/>)\s*)}i", "<br />", $string);
答案 2 :(得分:0)
删除br的所有排列:
<br> <br /> <br/> <br >
查看用户提供的strip_only()
功能。
echo strip_tags($string, '<br><br /><br/><br >');
答案 3 :(得分:0)
您可以使用
$s = preg_replace_callback('~<[^>]*>~', function ($m) {
return str_replace('<br />', '', $m[0]); }
, $s);
或者,对于损坏或不整洁的HTML:
$s = preg_replace_callback('~<[^>]*>~', function ($m) {
return preg_replace('~<\s*br\s*/?\s*>~i', '', $m[0]); }
, $s);
重点是:
<[^>]*>
正则表达式匹配(<
,然后是除>
之外的0+个字符,然后是>
)preg_replace_callback
和str_replace('<br />', '', $m[0])
将所有<br />
替换为匹配文本内仅空字符串仅。要说明<br>
的任何变体,您可以使用另一个preg_replace
,preg_replace('~<\s*br\s*/?\s*>~i', '', $m[0])
。