Explorar el Código

改进HtmlTools

懒得勤快 hace 6 años
padre
commit
9ab59d8210

+ 14 - 41
Masuit.Tools.Core/Html/HtmlHelper.cs

@@ -1,5 +1,6 @@
 using Masuit.Tools.Win32;
 using Masuit.Tools.Win32;
 using System;
 using System;
+using System.Collections.Generic;
 using System.IO;
 using System.IO;
 using System.IO.Compression;
 using System.IO.Compression;
 using System.Net;
 using System.Net;
@@ -40,47 +41,6 @@ namespace Masuit.Tools.Html
     /// </summary>
     /// </summary>
     public static partial class HtmlTools
     public static partial class HtmlTools
     {
     {
-        #region 私有字段
-
-        private static string contentType = "application/x-www-form-urlencoded";
-        private static string accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg," + " application/x-shockwave-flash, application/x-silverlight, " + "application/vnd.ms-excel, application/vnd.ms-powerpoint, " + "application/msword, application/x-ms-application," + " application/x-ms-xbap," + " application/vnd.ms-xpsdocument, application/xaml+xml, application/x-silverlight-2-b1, */*";
-        private static string userAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1;" + " .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)";
-        private static int delay = 1000;
-        private static int currentTry;
-
-        #endregion
-
-        #region 公有属性
-
-        /// <summary> 
-        /// 获取网页源码时使用的编码
-        /// </summary> 
-        public static Encoding Encoding { get; set; } = Encoding.GetEncoding("utf-8");
-
-        /// <summary>
-        /// 网络延迟
-        /// </summary>
-        public static int NetworkDelay
-        {
-            get
-            {
-                Random r = new Random();
-                return r.Next(delay, delay * 2);
-                // return (r.Next(delay / 1000, delay / 1000 * 2)) * 1000;
-            }
-            set
-            {
-                delay = value;
-            }
-        }
-
-        /// <summary>
-        /// 最大尝试次数
-        /// </summary>
-        public static int MaxTry { get; set; } = 300;
-
-        #endregion
-
         #region 1、获取HTML
         #region 1、获取HTML
 
 
         /// <summary>
         /// <summary>
@@ -312,6 +272,19 @@ namespace Masuit.Tools.Html
         /// <returns></returns>
         /// <returns></returns>
         public static MatchCollection MatchImgTags(this string html) => ImgRegex.Matches(html);
         public static MatchCollection MatchImgTags(this string html) => ImgRegex.Matches(html);
 
 
+        /// <summary>
+        /// 匹配html的所有img标签的src集合
+        /// </summary>
+        /// <param name="html"></param>
+        /// <returns></returns>
+        public static IEnumerable<string> MatchImgSrcs(this string html)
+        {
+            foreach (Match m in ImgRegex.Matches(html))
+            {
+                yield return m.Groups["src"].Value;
+            }
+        }
+
         /// <summary>
         /// <summary>
         /// 匹配html的一个img标签
         /// 匹配html的一个img标签
         /// </summary>
         /// </summary>

+ 2 - 1
Masuit.Tools.Core/Masuit.Tools.Core.csproj

@@ -2,7 +2,7 @@
 
 
   <PropertyGroup>
   <PropertyGroup>
     <TargetFramework>netcoreapp2.1</TargetFramework>
     <TargetFramework>netcoreapp2.1</TargetFramework>
-    <Version>2.1.4.1</Version>
+    <Version>2.1.4.2</Version>
     <Authors>懒得勤快</Authors>
     <Authors>懒得勤快</Authors>
     <Company>masuit.com</Company>
     <Company>masuit.com</Company>
     <Description>包含一些常用的操作类,大都是静态类,加密解密,反射操作,硬件信息,字符串扩展方法,日期时间扩展操作,大文件拷贝,图像裁剪,html处理,验证码、NoSql等常用封装。
     <Description>包含一些常用的操作类,大都是静态类,加密解密,反射操作,硬件信息,字符串扩展方法,日期时间扩展操作,大文件拷贝,图像裁剪,html处理,验证码、NoSql等常用封装。
@@ -77,6 +77,7 @@ string s = html.HtmlSantinizerStandard();//清理后:&lt;div&gt;&lt;span&gt;&l
 
 
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
     <DocumentationFile>bin\Release\netstandard2.0\Masuit.Tools.Core.xml</DocumentationFile>
     <DocumentationFile>bin\Release\netstandard2.0\Masuit.Tools.Core.xml</DocumentationFile>
+    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
   </PropertyGroup>
   </PropertyGroup>
 
 
   <ItemGroup>
   <ItemGroup>

+ 3 - 0
Masuit.Tools.Core/NoSQL/RedisHelperFactory.cs

@@ -3,6 +3,9 @@ using System.Collections.Generic;
 
 
 namespace Masuit.Tools.Core.NoSQL
 namespace Masuit.Tools.Core.NoSQL
 {
 {
+    /// <summary>
+    /// RedisHelper工厂类
+    /// </summary>
     public class RedisHelperFactory
     public class RedisHelperFactory
     {
     {
         internal static Dictionary<string, string> ConnectionCache { get; set; } = new Dictionary<string, string>();
         internal static Dictionary<string, string> ConnectionCache { get; set; } = new Dictionary<string, string>();

+ 21 - 0
Masuit.Tools.Core/NoSQL/ServiceCollectionExtensions.cs

@@ -2,18 +2,39 @@
 
 
 namespace Masuit.Tools.Core.NoSQL
 namespace Masuit.Tools.Core.NoSQL
 {
 {
+    /// <summary>
+    /// asp.net core依赖注入容器扩展
+    /// </summary>
     public static class ServiceCollectionExtensions
     public static class ServiceCollectionExtensions
     {
     {
+        /// <summary>
+        /// 注入一个本地化的RedisHelper
+        /// </summary>
+        /// <param name="services"></param>
+        /// <returns></returns>
         public static IServiceCollection AddLocalRedisHelper(this IServiceCollection services)
         public static IServiceCollection AddLocalRedisHelper(this IServiceCollection services)
         {
         {
             return AddRedisHelper(services, "local");
             return AddRedisHelper(services, "local");
         }
         }
 
 
+        /// <summary>
+        /// 注入一个默认的RedisHelper实例
+        /// </summary>
+        /// <param name="services"></param>
+        /// <param name="redisHost"></param>
+        /// <returns></returns>
         public static IServiceCollection AddDefaultRedisHelper(this IServiceCollection services, string redisHost)
         public static IServiceCollection AddDefaultRedisHelper(this IServiceCollection services, string redisHost)
         {
         {
             return AddRedisHelper(services, "default", redisHost);
             return AddRedisHelper(services, "default", redisHost);
         }
         }
 
 
+        /// <summary>
+        /// 注入RedisHelper
+        /// </summary>
+        /// <param name="services"></param>
+        /// <param name="name"></param>
+        /// <param name="redisHost"></param>
+        /// <returns></returns>
         public static IServiceCollection AddRedisHelper(this IServiceCollection services, string name, string redisHost = null)
         public static IServiceCollection AddRedisHelper(this IServiceCollection services, string name, string redisHost = null)
         {
         {
             RedisHelperFactory.ConnectionCache[name] = redisHost;
             RedisHelperFactory.ConnectionCache[name] = redisHost;

+ 14 - 41
Masuit.Tools/Html/HtmlHelper.cs

@@ -1,5 +1,6 @@
 using Masuit.Tools.Win32;
 using Masuit.Tools.Win32;
 using System;
 using System;
+using System.Collections.Generic;
 using System.IO;
 using System.IO;
 using System.IO.Compression;
 using System.IO.Compression;
 using System.Net;
 using System.Net;
@@ -40,47 +41,6 @@ namespace Masuit.Tools.Html
     /// </summary>
     /// </summary>
     public static partial class HtmlTools
     public static partial class HtmlTools
     {
     {
-        #region 私有字段
-
-        private static string contentType = "application/x-www-form-urlencoded";
-        private static string accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg," + " application/x-shockwave-flash, application/x-silverlight, " + "application/vnd.ms-excel, application/vnd.ms-powerpoint, " + "application/msword, application/x-ms-application," + " application/x-ms-xbap," + " application/vnd.ms-xpsdocument, application/xaml+xml, application/x-silverlight-2-b1, */*";
-        private static string userAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1;" + " .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)";
-        private static int delay = 1000;
-        private static int currentTry;
-
-        #endregion
-
-        #region 公有属性
-
-        /// <summary> 
-        /// 获取网页源码时使用的编码
-        /// </summary> 
-        public static Encoding Encoding { get; set; } = Encoding.GetEncoding("utf-8");
-
-        /// <summary>
-        /// 网络延迟
-        /// </summary>
-        public static int NetworkDelay
-        {
-            get
-            {
-                Random r = new Random();
-                return r.Next(delay, delay * 2);
-                // return (r.Next(delay / 1000, delay / 1000 * 2)) * 1000;
-            }
-            set
-            {
-                delay = value;
-            }
-        }
-
-        /// <summary>
-        /// 最大尝试次数
-        /// </summary>
-        public static int MaxTry { get; set; } = 300;
-
-        #endregion
-
         #region 1、获取HTML
         #region 1、获取HTML
 
 
         /// <summary>
         /// <summary>
@@ -312,6 +272,19 @@ namespace Masuit.Tools.Html
         /// <returns></returns>
         /// <returns></returns>
         public static MatchCollection MatchImgTags(this string html) => ImgRegex.Matches(html);
         public static MatchCollection MatchImgTags(this string html) => ImgRegex.Matches(html);
 
 
+        /// <summary>
+        /// 匹配html的所有img标签的src集合
+        /// </summary>
+        /// <param name="html"></param>
+        /// <returns></returns>
+        public static IEnumerable<string> MatchImgSrcs(this string html)
+        {
+            foreach (Match m in ImgRegex.Matches(html))
+            {
+                yield return m.Groups["src"].Value;
+            }
+        }
+
         /// <summary>
         /// <summary>
         /// 匹配html的一个img标签
         /// 匹配html的一个img标签
         /// </summary>
         /// </summary>

+ 17 - 0
Masuit.Tools/Linq/LinqExtension.cs

@@ -3,8 +3,18 @@ using System.Linq.Expressions;
 
 
 namespace Masuit.Tools.Linq
 namespace Masuit.Tools.Linq
 {
 {
+    /// <summary>
+    /// linq扩展
+    /// </summary>
     public static class LinqExtension
     public static class LinqExtension
     {
     {
+        /// <summary>
+        /// 与连接
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="left"></param>
+        /// <param name="right"></param>
+        /// <returns></returns>
         public static Expression<Func<T, bool>> And<T>(this Expression<Func<T, bool>> left, Expression<Func<T, bool>> right)
         public static Expression<Func<T, bool>> And<T>(this Expression<Func<T, bool>> left, Expression<Func<T, bool>> right)
         {
         {
             var dateExpr = Expression.Parameter(typeof(T));
             var dateExpr = Expression.Parameter(typeof(T));
@@ -15,6 +25,13 @@ namespace Masuit.Tools.Linq
             return Expression.Lambda<Func<T, bool>>(body, dateExpr);
             return Expression.Lambda<Func<T, bool>>(body, dateExpr);
         }
         }
 
 
+        /// <summary>
+        /// 或连接
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="left"></param>
+        /// <param name="right"></param>
+        /// <returns></returns>
         public static Expression<Func<T, bool>> Or<T>(this Expression<Func<T, bool>> left, Expression<Func<T, bool>> right)
         public static Expression<Func<T, bool>> Or<T>(this Expression<Func<T, bool>> left, Expression<Func<T, bool>> right)
         {
         {
             var dateExpr = Expression.Parameter(typeof(T));
             var dateExpr = Expression.Parameter(typeof(T));

+ 11 - 0
Masuit.Tools/Linq/ParameterReplacer.cs

@@ -2,6 +2,9 @@
 
 
 namespace Masuit.Tools.Linq
 namespace Masuit.Tools.Linq
 {
 {
+    /// <summary>
+    /// 表达式树参数替换
+    /// </summary>
     public class ParameterReplacer : ExpressionVisitor
     public class ParameterReplacer : ExpressionVisitor
     {
     {
         public ParameterReplacer(ParameterExpression paramExpr)
         public ParameterReplacer(ParameterExpression paramExpr)
@@ -9,8 +12,16 @@ namespace Masuit.Tools.Linq
             this.ParameterExpression = paramExpr;
             this.ParameterExpression = paramExpr;
         }
         }
 
 
+        /// <summary>
+        /// 参数表达式树
+        /// </summary>
         public ParameterExpression ParameterExpression { get; private set; }
         public ParameterExpression ParameterExpression { get; private set; }
 
 
+        /// <summary>
+        /// 替换表达式树
+        /// </summary>
+        /// <param name="expr"></param>
+        /// <returns></returns>
         public Expression Replace(Expression expr)
         public Expression Replace(Expression expr)
         {
         {
             return this.Visit(expr);
             return this.Visit(expr);

+ 2 - 2
Masuit.Tools/Properties/AssemblyInfo.cs

@@ -36,7 +36,7 @@ using System.Runtime.InteropServices;
 // 方法是按如下所示使用“*”: :
 // 方法是按如下所示使用“*”: :
 // [assembly: AssemblyVersion("1.0.*")]
 // [assembly: AssemblyVersion("1.0.*")]
 
 
-[assembly: AssemblyVersion("2.1.4.0")]
-[assembly: AssemblyFileVersion("2.1.4.0")]
+[assembly: AssemblyVersion("2.1.4.1")]
+[assembly: AssemblyFileVersion("2.1.4.1")]
 [assembly: NeutralResourcesLanguage("zh-CN")]
 [assembly: NeutralResourcesLanguage("zh-CN")]
 
 

+ 5 - 0
Masuit.Tools/Validator/ComplexPassword.cs

@@ -8,6 +8,11 @@ namespace Masuit.Tools.Validator
     /// </summary>
     /// </summary>
     public class ComplexPassword : ValidationAttribute
     public class ComplexPassword : ValidationAttribute
     {
     {
+        /// <summary>
+        /// 密码复杂度校验
+        /// </summary>
+        /// <param name="value"></param>
+        /// <returns></returns>
         public override bool IsValid(object value)
         public override bool IsValid(object value)
         {
         {
             string pwd = value as string;
             string pwd = value as string;

+ 8 - 0
Masuit.Tools/Validator/IsEmailAttribute.cs

@@ -2,8 +2,16 @@
 
 
 namespace Masuit.Tools.Validator
 namespace Masuit.Tools.Validator
 {
 {
+    /// <summary>
+    /// Email校验器
+    /// </summary>
     public class IsEmailAttribute : ValidationAttribute
     public class IsEmailAttribute : ValidationAttribute
     {
     {
+        /// <summary>
+        /// Email校验
+        /// </summary>
+        /// <param name="value"></param>
+        /// <returns></returns>
         public override bool IsValid(object value)
         public override bool IsValid(object value)
         {
         {
             if (value == null)
             if (value == null)

+ 7 - 2
Masuit.Tools/Validator/IsIPAddressAttribute.cs

@@ -7,6 +7,11 @@ namespace Masuit.Tools.Validator
     /// </summary>
     /// </summary>
     public class IsIPAddressAttribute : ValidationAttribute
     public class IsIPAddressAttribute : ValidationAttribute
     {
     {
+        /// <summary>
+        /// IPv4校验
+        /// </summary>
+        /// <param name="value"></param>
+        /// <returns></returns>
         public override bool IsValid(object value)
         public override bool IsValid(object value)
         {
         {
             if (value is null)
             if (value is null)
@@ -14,8 +19,8 @@ namespace Masuit.Tools.Validator
                 ErrorMessage = "IP地址不能为空!";
                 ErrorMessage = "IP地址不能为空!";
                 return false;
                 return false;
             }
             }
-            string email = value as string;
-            if (email.MatchInetAddress())
+            string ip = value as string;
+            if (ip.MatchInetAddress())
             {
             {
                 return true;
                 return true;
             }
             }

+ 5 - 0
Masuit.Tools/Validator/IsPhoneAttribute.cs

@@ -7,6 +7,11 @@ namespace Masuit.Tools.Validator
     /// </summary>
     /// </summary>
     public class IsPhoneAttribute : ValidationAttribute
     public class IsPhoneAttribute : ValidationAttribute
     {
     {
+        /// <summary>
+        /// 大陆手机号校验
+        /// </summary>
+        /// <param name="value"></param>
+        /// <returns></returns>
         public override bool IsValid(object value)
         public override bool IsValid(object value)
         {
         {
             if (value is null)
             if (value is null)

+ 3 - 0
Masuit.Tools/Validator/MaxValueAttribute.cs

@@ -3,6 +3,9 @@ using System.ComponentModel.DataAnnotations;
 
 
 namespace Masuit.Tools.Validator
 namespace Masuit.Tools.Validator
 {
 {
+    /// <summary>
+    /// 最大值校验
+    /// </summary>
     public class MaxValueAttribute : ValidationAttribute
     public class MaxValueAttribute : ValidationAttribute
     {
     {
         private double MaxValue { get; }
         private double MaxValue { get; }