请教个在线编辑文章的问题.页面上编辑文章,如何检查里边的HTML是否完整? (加分贴)

fengyecsdn 2008-07-16 09:31:36
原贴这里 http://topic.csdn.net/u/20080716/09/e0d021a2-9069-43ac-adcf-badcc1a82769.html
这里的分可以给你.
这里是加分.回答问题请在那边和这边留名.谢谢.因为原贴还没来得及改分就给按错了.
嘿嘿
...全文
144 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengyecsdn 2008-08-01
  • 打赏
  • 举报
回复
顺序不对 等于没加都交叉嵌套了
guyan033 2008-07-31
  • 打赏
  • 举报
回复
就应该是加到后面呀,
fengyecsdn 2008-07-18
  • 打赏
  • 举报
回复
leon28 不中啊 我试了,所有的标记都给加到后边了.
yigeming 2008-07-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 suyiming 的回复:]
FCKeditorV2 这个应该够楼主用
[/Quote]
李班头 2008-07-16
  • 打赏
  • 举报
回复
帮顶啦,看看!
suyiming 2008-07-16
  • 打赏
  • 举报
回复
FCKeditorV2 这个应该够楼主用
nopole 2008-07-16
  • 打赏
  • 举报
回复
http://blog.csdn.net/nopole/archive/2008/03/19/2197285.aspx

楼主参考一下

这是我前段时间搞的 里面有你需要的东西
aaajedll 2008-07-16
  • 打赏
  • 举报
回复
ls正解
leon28 2008-07-16
  • 打赏
  • 举报
回复

/*
* 按字节长度截取字符串(支持截取带HTML代码样式的字符串)
* @param param 将要截取的字符串参数
* @param length 截取的字节长度
* @param end 字符串末尾补上的字符串
* @return 返回截取后的字符串
*/
public static string subStringHTML(string param,int length,string end)
{
string Pattern = null;
MatchCollection m = null;
StringBuilder result = new StringBuilder();
int n = 0;
char temp;
bool isCode = false; //是不是HTML代码
bool isHTML = false; //是不是HTML特殊字符,如 
char[] pchar = param.ToCharArray();
for (int i = 0; i < pchar.Length; i++)
{
temp = pchar[i];
if (temp == '<')
{
isCode = true;
}
else if (temp == '&')
{
isHTML = true;
}
else if (temp == '>' && isCode)
{
n = n - 1;
isCode = false;
}
else if (temp == ';' && isHTML)
{
isHTML = false;
}
if (!isCode && !isHTML)
{
n = n + 1;
//UNICODE码字符占两个字节
if (System.Text.Encoding.Default.GetBytes(temp + "").Length > 1)
{
n = n + 1;
}
}
result.Append(temp);
if (n >= length)
{
break;
}
}
result.Append(end);
//取出截取字符串中的HTML标记
string temp_result = result.ToString().Replace("(>)[^<>]*(<?)","$1$2");
//去掉不需要结素标记的HTML标记
temp_result = temp_result.Replace(@"</?(AREA|BASE|BASEFONT|BODY|BR|COL|COLGROUP|DD|DT|FRAME|HEAD|HR|HTML|IMG|INPUT|ISINDEX|LI|LINK|META|OPTION|P|PARAM|TBODY|TD|TFOOT|TH|THEAD|TR|area|base|basefont|body|br|col|colgroup|dd|dt|frame|head|hr|html|img|input|isindex|li|link|meta|option|p|param|tbody|td|tfoot|th|thead|tr)[^<>]*/?>",
"");
//去掉成对的HTML标记
temp_result=temp_result.Replace(@"<([a-zA-Z]+)[^<>]*>(.*?)</\1>","$2");
//用正则表达式取出标记
Pattern = ("<([a-zA-Z]+)[^<>]*>");
m = Regex.Matches(temp_result,Pattern);
ArrayList endHTML = new ArrayList();
foreach(Match mt in m)
{
endHTML.Add(mt.Result("$1"));
}
//补全不成对的HTML标记
for (int i = endHTML.Count - 1; i >= 0; i--)
{
result.Append("</");
result.Append(endHTML[i]);
result.Append(">");
}
return result.ToString();
}
//望此方法对楼主有用


fengyecsdn 2008-07-16
  • 打赏
  • 举报
回复
上边说错了.是说的2楼的兄弟
fengyecsdn 2008-07-16
  • 打赏
  • 举报
回复
楼上的哥们,你这个不行啊.书写错误暂不错,处理出来的标记多出来很多,而且顺序还不对.

61,823

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧