日期:2014-05-18  浏览次数:20342 次

如果提取HTML数据中的主要内容?
我的SQL数据库中有很多用户发表的文章,都包含HTML代码的数据.
我现在想通过一个方法把每篇文章的前300个字符提取出来,以致在一页面中显示多篇文章的主要内容,同时也保留原来文章的显示格式.
      但在过程中,我遇到了以下问题:
      我并不想打断HTML代码,如 <TABLE> </TABLE> 只提取了一半 <TABLE> ,那么这样的话,就会影响我网页框架的布局,HTML代码中什么都包含,如IMG,TABLE,OBJECT...如果一当没有成对的提取这些HTML标识的话,我后面的布局就完全被打乱了.
      请问大家有什么好的方法?

------解决方案--------------------
暂时没啥好办法, 可以考虑indexof判断比如截取后的字符串判断 <table> 是否是在 </table> 出现之后..那就人为再补上一个
------解决方案--------------------
难办,如果是格式良好的 xml 是有办法的,html 语法不严,不好分析,
------解决方案--------------------
在发布时想办法
------解决方案--------------------
不知道可以不可以把格式在显示的时候定下来~
这样方便点吧
------解决方案--------------------
/// <summary>
/// 过滤字符串中非文字字符
/// </summary>
/// <param name= "HtmlStr "> 要过滤的字符 </param>
/// <returns> 返回过滤后的字符 </returns>
public static string FiterHTML(string HtmlStr)
{
System.Text.RegularExpressions.Regex objReg = new System.Text.RegularExpressions.Regex(@ " <[\s\S]*?> ",
System.Text.RegularExpressions.RegexOptions.Multiline);
int i = 0;
while (objReg.IsMatch(HtmlStr, 0) && i < HtmlStr.Length)
{
HtmlStr = objReg.Replace(HtmlStr, " "); i++;
}
return HtmlStr;
}

过滤掉HTML的标签,然后用SubString
------解决方案--------------------
不会,关注~
------解决方案--------------------
我也遇见这问题,完全保留格式太难了,最后我没办法,把table之类的全部用正则去掉了.再截300个字.图片和<object之类的相对简单点,一般这种数量都不会很多.我的操作是:把这些标签的内容全找出来并替换成特殊字符(不常见的).然后截取300个字,再找其中的特殊字符一一对应替换回来,这样就能保证不会被截断.