【BG】:这个部分类似一个信息发布系统,通过HTML文本编辑器输入内容,内容包含HTML标签。
【需求】:现在需要在首页的一个模块显示最新的信息,并且需要去掉改变字体的样式、间距等一些HTML标签(先保留<UI><LI>这种)而采用统一的样式,但因有模块大小限制,所以只能显示信息的前8行,然后后面加...。
----------------------------------------------------------
我的想法是这样的:
【1】.先可以考虑去掉 style="",class="",<b>,<i>,<u>,<FONT>... 这种;
【2】.将<hn>,<br>这种要换行的都 换成 <p>;
【3】.根据<p>来换行(另外要考虑一行只能显示40个字符左右;<table>)
这里有
----------------------------------------------------------
【Q1】要去掉style="",class=""用正则表达式应该如何写?
content = System.Text.RegularExpressions.Regex.Replace(content,"","");
【Q2】上面的第三点怎样实现好?
<div>有个 overflow=hidden 但是不好控制宽度,可能会出现一半的行
【Q3】请问有没有好的方法实现?
【需求】:现在需要在首页的一个模块显示最新的信息,并且需要去掉改变字体的样式、间距等一些HTML标签(先保留<UI><LI>这种)而采用统一的样式,但因有模块大小限制,所以只能显示信息的前8行,然后后面加...。
----------------------------------------------------------
我的想法是这样的:
【1】.先可以考虑去掉 style="",class="",<b>,<i>,<u>,<FONT>... 这种;
【2】.将<hn>,<br>这种要换行的都 换成 <p>;
【3】.根据<p>来换行(另外要考虑一行只能显示40个字符左右;<table>)
这里有
----------------------------------------------------------
【Q1】要去掉style="",class=""用正则表达式应该如何写?
content = System.Text.RegularExpressions.Regex.Replace(content,"","");
【Q2】上面的第三点怎样实现好?
<div>有个 overflow=hidden 但是不好控制宽度,可能会出现一半的行
【Q3】请问有没有好的方法实现?
不过3L的好像不能实现,我想要的是只显示前8行,而且行的宽度已经定死了,不能改变宽度,应该自动换行。
我说的“可能会出现一半的行”是指字符上半部分显示,而下半部分未显示。
white-space:nowrap 这样不是一行会很长?
2:<p>定义样式 width:300px;再按照字节数截取字符串,8×40=320字符
/// <summary>
/// 移除Html标记
/// </summary>
/// <param name="content"></param>
/// <returns></returns>
public static string RemoveHtml(string content)
{
string regexstr = @"<[^>]*>";
return Regex.Replace(content, regexstr, string.Empty, RegexOptions.IgnoreCase);
}
1.是不是要考虑style class作为单词出现而不是作为HTML标签的属性;
2.每一行字符数都不同,而且可能还有table就不能简单截取吧
我要的不是去掉所有的HTML标签,还要保留<hn>、<br>、<p>、<tr>、<li>这样的换行
另外还要单独考虑<table>一下
呃,写的不规范;谁帮我改一下
public static string StripHTML(string strHtml)
{
string [] aryReg ={
@"<script[^>]*?>.*?</script>", @"<(\/\s*)?!?((\w+:)?\w+)(\w+(\s*=?\s*(([""'])(\\[""'tbnr]|[^\7])*?\7|\w+)|.{0})|\s)*?(\/\s*)?>",
@"([\r\n])[\s]+",
@"&(quot|#34);",
@"&(amp|#38);",
@"&(lt|#60);",
@"&(gt|#62);",
@"&(nbsp|#160);",
@"&(iexcl|#161);",
@"&(cent|#162);",
@"&(pound|#163);",
@"&(copy|#169);",
@"&#(\d+);",
@"-->",
@"<!--.*\n"
}; string [] aryRep = {
"",
"",
"",
"\"",
"&",
"<",
">",
" ",
"\xa1",//chr(161),
"\xa2",//chr(162),
"\xa3",//chr(163),
"\xa9",//chr(169),
"",
"\r\n",
""
}; string newReg =aryReg[0];
string strOutput=strHtml;
for(int i = 0;i<aryReg.Length;i++)
{
System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(aryReg[i],System.Text.RegularExpressions.RegexOptions.IgnoreCase);
strOutput = regex.Replace(strOutput,aryRep[i]);
}
strOutput.Replace("<","");
strOutput.Replace(">","");
strOutput.Replace("\r\n","");
return strOutput;
}