请注意,本站并不支持低于IE8的浏览器,为了获得最佳效果,请下载最新的浏览器,推荐下载 Chrome浏览器
欢迎光临。交流群:166852192

添加html过滤器


有些时候,我们需要其它网站复制一些内容到自己的网站,会遇到一些烦人的事情,比如,复制的内容中含有图片,而图片中含有无耻的title,alt等等

怎么办呢?
我们可以实现一个htmlFilter
如:
 public class HtmlFilter:IHtmlFilter
    {
        public string ProcessContent(string text, string flavor)
        {
            return String.Equals(flavor, "html", StringComparison.OrdinalIgnoreCase) ? RemoveImgAtt(text) : text;
        }
        public string RemoveImgAtt(string HtmlCode)
        {
            string Img = @"(?<img><img.+?>)";

            string width = @"width=[\'\""]?(?<width>\d*)[\'\""]?\s?";
            string height = @"height=[\'\""]?(?<height>\d*)[\'\""]?\s?";
            string src = @"src\s*=\s*('|"")?(?<src>([^'"">\s]*))('|"")?([^>])*>";
            var imgformat = @"<img src=""{0}"" width=""{1}"" height=""{2}"" />";
            foreach (Match m in Regex.Matches(HtmlCode, Img, RegexOptions.IgnoreCase))

            {
                var previmg = m.Groups["img"].Value;

                var srcvalue = Regex.Match(previmg, src, RegexOptions.IgnoreCase).Groups["src"].Value;
                var heightvalue = Regex.Match(previmg, height, RegexOptions.IgnoreCase).Groups["height"].Value;
                var widthvalue = Regex.Match(previmg, width, RegexOptions.IgnoreCase).Groups["width"].Value;
                var imgresult = string.Format(imgformat, srcvalue, widthvalue, heightvalue);
                HtmlCode = HtmlCode.Replace(previmg, imgresult);
            }
            return HtmlCode;
        }


    }
在update的时候,先进行一下过滤
如:
 bodyText = _htmlFilters.Aggregate(part.Text, (text, filter) => filter.ProcessContent(text, "html"));


说明:
IHtmlFilter接口,位于Orchard.Services命名空间下。
namespace Orchard.Services {
    public interface IHtmlFilter : IDependency {
        string ProcessContent(string text, string flavor);
    }
}
有一个方法,就是替换方法,参数说明
text:需要过滤的源文本
flavor:适用情况,可以根据自己的需要写,比如Orchard中的BodyPart的flavor,有html,markdown等等


那么如果原来的数据已经添加到数据库中没有进行过过滤,而在显示的时候又不想被发现怎么办呢?
可以参考BodyPartDriver
在对应显示的视图上进行过滤。

作者原创内容不容易,如果觉得内容不错,请点击右侧“打赏”,赏俩给作者花花,也算是对作者付出的肯定,也可以鼓励作者原创更多更好内容。
更多详情欢迎到QQ群 166852192 交流。