我正在开发一个ASP.Net MVC4 Web应用程序,它有一个显示新闻文章列表的新闻部分。该列表显示每篇文章的新闻标题,然后打印出新闻文本的前400个字符,因为这只是一个摘要页面。当用户点击新闻标题时,他们就可以完整地看到新闻文章了。
要向网站添加新闻文章,我使用FCKEditor作为富文本编辑器,该编辑器还允许用户上传图像以伴随文本。当我打印出每篇新闻文章的前400个字符时,我就这样做了
@Html.Raw(news.newsText.Substring(0, 400))
只要前400个字符中没有图像标记,这就可以正常工作,但是,如果用户将图像添加到前400个字符的文本中,则图像会显示在新闻摘要中,这使它看起来像凌乱。
相反,如果前400个字符中有图像标记,我宁愿不显示它,而只是显示文本。
我想知道这是否可行?
谢谢你的帮助。
答案 0 :(得分:1)
在你使用剃须刀之前,你可以使用这样的代码在控制器中剥离它们。
var news = news.newsText.Substring(0, 400);
news = Regex.Replace(news, @"<img\s[^>]*>(?:\s*?</img>)?", "", RegexOptions.IgnoreCase);
但是,我建议使用像Html Agility Pack这样的任务来完成这些任务。
答案 1 :(得分:1)
您可以使用正则表达式从HTML中删除所有<img>
标记,然后从中删除400个字符。
您可以为此创建自己的扩展方法,如下所示:
public static class StringExtensions
{
public static string SkipImgTags(this string html, int length)
{
string strWithoutImgTags = Regex.Replace( html, @"(<img\/?[^>]+>)", @"", RegexOptions.IgnoreCase );
return strWithoutImgTags.Substring(strWithoutImgTags.Length - length);
}
}
然后,在您的代码中,您可以按以下方式调用它:
@Html.Raw(news.newsText.SkipImgTags(400))