• 统计局:5月份一线城市商品住宅销售价格同比持续下降 2019-05-23
  • 上港不败金身告破无碍头名出线 淘汰赛恐遇恶战 2019-05-23
  • 暖心!高铁列车为他停靠三分钟 这一次没有人反对 2019-05-22
  • 国台办:解放军绕岛飞行就是对“台独”的强烈警告 2019-05-22
  • 西安外事学院在省茶艺大赛中创多项佳绩西安外事学院-陕西教育新闻 2019-05-21
  • 房地产就有国家和集体之土地不计价到计价,这笔是经济收入还是财产收入? 2019-05-20
  • 语文水平太差,直通通的转不弯来,又怎么表现逻辑大师的水平,忽悠成为自我暴露 2019-05-19
  • 反四风,树新风——推动作风建设向纵深发展 2019-05-19
  • 加籍华裔丈夫携山西妻子创业卖龙虾月入30万|No.436 2019-05-18
  • 端午节回归传统习俗 西安市民排队买艾草端午节艾叶-要闻 2019-05-17
  • 珠海高栏港经济区2020年村容村貌将明显改观 2019-05-17
  • 乌鲁木齐县“访惠聚”工作队收到一张特殊的手绘奖状 2019-05-16
  • 可透视的AI问世了 你的一举一动都在别人眼里 2019-05-15
  • 我们在星星上再次相遇——2017凤凰年度好书发布 2019-05-15
  • 云南惊现34斤重缅甸蟒  森警及时救助放生 2019-05-14
  • 青海网站建设、网络推广最好的公司--您身边的网站建设专家,马上拿起电话,联系我们:0971-8235355   
    4场进球彩方法 4场进球彩方法 |  公司简介 |  网站建设 |  网络推广 |  空间租用 |  域名注册 |  企业邮局 |  网络安全 |  网站编程 |  客服中心 |  联系我们 |  人才招聘
     
    西宁威势最新网站制做案例展示
    Lastest Project
     
    西宁网站建设  
    当前位置为:4场进球彩方法 >> .NET编程 >> 正文  
    (半原创)匹配出页面中所有的IMG,以便在删除文章时将文章内的图片也同时删除

    文章来源: 4场进球彩方法     发布时间:2010-10-11    浏览次数:6188   

    4场进球彩方法 www.iubwq.tw 在从数据库删除文章内容时,将内容中包括的图片也一起删除.下面代码来自于网上搜索,版权归原作者所有.源作者的代码很短小精悍,但是正则匹配的时候不是太好用,有些图片匹配不出来.于是本人有略微改动.匹配率提升很高,除了很古怪的javascript语法中的路径不能区别,其它的都能匹配出来.

    新建一个ASPX页面

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" ValidateRequest="false" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "

    <html xmlns="<head runat="server">
        <title>无标题页</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div align="center">
       
            <asp:TextBox ID="TextBox1" runat="server" Height="283px" TextMode="MultiLine"
                Width="800px"></asp:TextBox>
            <br />
            <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
       
        </div>
        </form>
    </body>
    </html>

    using System;
    using System.Text.RegularExpressions;
    public partial class Default2 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
        }

        /// 获得图片路径
        /// </summary>
        /// <param name="str">内容</param>
        /// <returns>string 结果</returns>
        private string getPicUrl(string str)
        {
            string content = "", regstr = "", url = "";
            content = str + "";
            //regstr = @"<img.*src=([\""\']?)(.\S+)\1.*>"; 匹配出整个<img xxxx />
            regstr = @"src=([\""\']?)(.\S+)\1.(?:jpg|bmp|gif)(?:)"; // 匹配出 src
            content = Regex_Execute(regstr, content);
            content = content.Replace("'", "");
            content = content.Replace("\"", "");
            url = content.Replace("src=", "");

            return url;
        }

        /// <summary>
        /// 正则表达式匹配
        /// </summary>
        /// <param name="patrn">正则表达式</param>
        /// <param name="str">内容</param>
        /// <returns>string 结果</returns>
        private string Regex_Execute(string patrn, string str)
        {
            string values = "";
            Regex rx = new Regex(patrn);

            MatchCollection mc = rx.Matches(str);

            foreach (Match match in mc)
            {
                values = values + match.Value + "|";
            }

            return values;
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            string htmlText = this.TextBox1.Text;
            string strPaths = getPicUrl(htmlText);
            Response.Write(strPaths);

        }
    }

     

    页面运行后将以下内容模仿HTML内容输入进去进行匹配测试

    设计了以下各种常见的代码障碍(单引号,双引号,脚本,样式...)

    <img id=img src="/images/reallydo1.jpg">

    <img id=img src=/images/reallydo2.jpg/> 后来证明这句是错误的HTML,图片不能正常显示.
    <img id=img src=/images/reallydo3.jpg />
    <img id=gif src=//jorkin.reallydo.com/images/reallydo4.gif />
    <img id=img /src="/imagesreallydo5.bmp" class=go>
    <img id=img src="/images/reallydo6.jpg" class=go/>
    <img id=jpg src="/images.gif/reallydo7.jpg" class=go />
    <img id=img src="//www.iubwq.tw/images/reallydo8.jpg" class=go />
    <IMG id=png src=/reallydo.jpg/reallydo9.jpg onclick='' class=go>
    <img id=img src=/images/reallydo10.jpg onclick='>' class=go/>
    <img id=bmp src=/images/reallydo11.jpg onclick='<' class='go' />
    <img id=img src=//www.qhwins.com/images/reallydo12.jpg onclick='<' class='go' />
    <img onclick="" id=img src='/images/reallydo13.jpg' class=go>
    <img id=img src='/images/reallydo14.jpg' onblur=">" class='go'/>
    <img id=img onfocus="<" src='/images/reallydo15.jpg' class=go />
    <img id=img onclick=">" src='//www.qhwins.com/images/reallydo16.jpg' class=go />
    <IMG id=img src='//www.qhwins.com/images/reallydo17.jpg' onclick="<" class=go />
    <img border=0 onclick="if(this.width>=690) window.open('//qhwins.com/images/jorkin18.gif');" onload="if(this.width>'29')this.width='25';if(this.height>'28')this.height='88';" src='//qhwins.com/images/reallydo19.gif'>
    <img src='../reallydo21.gif' onclick="if(this.width>=14) window.open('../jorkin.jpg20.gif');" onload="if(this.width>'82')this.width='222';if(this.height>'1024')this.height='1024';" border=0>
    <IMG src="<IMG src="

    已证明为错误的正则:

    <img.*src=([\""\']?)(.\1\S+).*>
    <img.+?src=[\'|\"](.+?)[\'|\"].+?>
    <img(.+?)src=('|\")?([^\s]+?)('|\"|\/|'\/|\"\/)?(\s|>)

    以下正则目前测试还未发现错误:

    <img.*src=([\""\']?)(.\S+)\1.*>
    $2 为 IMG 的 SRC 地址

    已发现BUG:
    BUG-001:SRC内如果有空格的话,也会出错.不过一般情况下是不会有的.会被Encode为%20.
    BUG-002:不能最小匹配,必须一整行只有一个<img>标签时才能有效.
    而改为<img.*src=([\""\']?)(.\S+)\1.*?>个别障碍不能正常通过.

    如发现其它BUG请在下边评论中反馈给我.

    测试中:
    PatternStr = "\s[on].+?=([\""|\'])(.+?)\1"
    RepStr = ""
    PatternStr=">"
    RepStr=">"& vbNewLine
    PatternStr = "<img.*src=([\""\']?)(.\1\S+).*?>"
    RepStr = "<img src=$2 border=0>"
    PatternStr=">"& vbNewLine
    RepStr=">"
    用户名 : 王晖先生
    注册日期 : 2008-1-24
    所在地 :
    发帖数 : 1236
    个性签名
    好好做事
    标签
    标题 : re:C# 中利用 DirectSound 录音 [2008-11-8 21:35:25]

    输入结果

    /images/reallydo1.jpg|/images/reallydo2.jpg|/images/reallydo3.jpg|//jorkin.reallydo.com/images/reallydo4.gif|/imagesreallydo5.bmp|/images/reallydo6.jpg|/images.gif/reallydo7.jpg|//www.qhwins.com/images/reallydo8.jpg|/reallydo.jpg/reallydo9.jpg|/images/reallydo10.jpg|/images/reallydo11.jpg|//www.qhwins.com/images/reallydo12.jpg|/images/reallydo13.jpg|/images/reallydo14.jpg|/images/reallydo15.jpg|//www.reallydo.com/images/reallydo16.jpg|//www.qhwins.com/images/reallydo17.jpg|//qhwins.com/images/reallydo19.gif|../reallydo21.gif|


    上一篇:C#操作注册表全攻略
    下一篇:[原创]64位主机IIS中没有asp.net选项的解决办法
    评论列表
    正在加载评论……
      
    评论   
    呢  称:
    验证码: 若看不清请点击更换!
    内  容:
     
     
      在线洽谈咨询:
    点击这里,在线洽谈   点击这里,在线洽谈   点击这里,在线洽谈
    与我交谈  与我交谈 与我交谈
    乘车路线    汇款方式   加盟合作  人才招聘  
    公司地址:青海省西宁市西关大街73号(三二四部队招行所四楼)     青ICP备13000578号-1 公安机关备案号:63010402000123    
    QQ:147399120    mail:[email protected]    电话: 13897410341    邮编:810000
    © Copyright( 2008-2009) www.iubwq.tw All Rights Reserved    版权所有:西宁威势电子信息服务有限公司 未经书面制授权,请勿随意转载!
    业务:青海网站制做、青海网站建设、青海网页设计、西宁网站制做、西宁网站建设、青海域名注册、青海网络推广、青海网站推广、青??占渥庥?/a>、4场进球彩方法、4场进球彩方法、网络安全

  • 统计局:5月份一线城市商品住宅销售价格同比持续下降 2019-05-23
  • 上港不败金身告破无碍头名出线 淘汰赛恐遇恶战 2019-05-23
  • 暖心!高铁列车为他停靠三分钟 这一次没有人反对 2019-05-22
  • 国台办:解放军绕岛飞行就是对“台独”的强烈警告 2019-05-22
  • 西安外事学院在省茶艺大赛中创多项佳绩西安外事学院-陕西教育新闻 2019-05-21
  • 房地产就有国家和集体之土地不计价到计价,这笔是经济收入还是财产收入? 2019-05-20
  • 语文水平太差,直通通的转不弯来,又怎么表现逻辑大师的水平,忽悠成为自我暴露 2019-05-19
  • 反四风,树新风——推动作风建设向纵深发展 2019-05-19
  • 加籍华裔丈夫携山西妻子创业卖龙虾月入30万|No.436 2019-05-18
  • 端午节回归传统习俗 西安市民排队买艾草端午节艾叶-要闻 2019-05-17
  • 珠海高栏港经济区2020年村容村貌将明显改观 2019-05-17
  • 乌鲁木齐县“访惠聚”工作队收到一张特殊的手绘奖状 2019-05-16
  • 可透视的AI问世了 你的一举一动都在别人眼里 2019-05-15
  • 我们在星星上再次相遇——2017凤凰年度好书发布 2019-05-15
  • 云南惊现34斤重缅甸蟒  森警及时救助放生 2019-05-14