去掉 从标签内

问题描述 投票:0回答:4

我有一个从数据库字符串,它是写不正确的:

$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)&nbsp;Regulamentele</FONT> <A <br />href="doc:910013103/33">nr. 131/1991,&nbsp;<A <br />href="doc:1010117203/2">1172/2001,&nbsp;<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">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br /><FONT color=#0000ff>2)&nbsp;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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3)&nbsp;Metodologie&nbsp;<A <br />href="doc:1070064010/25">nr.640/2007.&nbsp;&nbsp;</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为特征线,因为我使用的是网页视图中这段文字在移动应用

php tags preg-replace str-replace
4个回答
1
投票

替换换行符qazxsw POI标签

<br/>

0
投票

用这个 :

   $string =  preg_replace("#<br\s*/?>#i", "\n", $string);

要么

preg_replace('/(<br[\s]?[\/]?>[\s]*){3,}/', '<br /><br />', $string);

0
投票

要删除BR的所有排列:

$string=preg_replace("{(<br[\\s]*(>|\/>)\s*){2,}}i", "<br /><br />", $string);
$string=preg_replace("{(<br[\\s]*(>|\/>)\s*)}i", "<br />", $string);

检查出的用户贡献<br> <br /> <br/> <br > 功能。

strip_only()

0
投票

您可以使用

echo strip_tags($string, '<br><br /><br/><br >');

或者,对于损坏或凌乱的HTML:

$s = preg_replace_callback('~<[^>]*>~', function ($m) { 
    return str_replace('<br />', '', $m[0]); }
, $s);

重点是:

  • 所有元件节点与正则表达式$s = preg_replace_callback('~<[^>]*>~', function ($m) { return preg_replace('~<\s*br\s*/?\s*>~i', '', $m[0]); } , $s); 匹配(<[^>]*>,比其他<and然后然后0+字符>
  • 本场比赛被传递给匿名函数在>
  • preg_replace_callback替换只有匹配的文本中的空字符串的所有str_replace('<br />', '', $m[0])。为了解释的<br />您可以使用另一个<br>preg_replace任何变种。
© www.soinside.com 2019 - 2024. All rights reserved.