• 网约车陷阱多 谨防四类风险 2019-07-14
  • 水土保持-近在你身边-图解新闻 2019-07-14
  • 一诚长老:出去走一走 才知道有没有定力 2019-07-09
  • 中方有力回击!美国多个行业喊痛:“加征关税就是对美国消费者征税” 2019-07-07
  • 【学习时刻】参会专家盛小云:坚定文化自信,用高尚的作品引领社会风尚 2019-07-07
  • 安徽省高校公共体艺教育推行俱乐部制 2019-06-23
  • “一带一路”中小企业国际合作高峰论坛在京举行 2019-06-23
  • 端午节期间 拉萨至日喀则增开列车 2019-06-16
  • 朱迪:社会发展新阶段的消费品味特征 2019-06-15
  • 淳安县:构建“大调解”体系 2019-06-15
  • 糖尿病打胰岛素是好还是坏?知道答案的糖友都沉默了 2019-06-08
  • 轩辕坛-聚焦汽车两会热点 2019-06-07
  • 波罗木刻:一把刻刀 点木成“金” 2019-06-06
  • 最高检依法决定对余刚立案侦查 2019-06-05
  • 联播快讯:长江镇江段今起实施12天限时封航 2019-06-05
  • 青海网站建设、网络推广最好的公司--您身边的网站建设专家,马上拿起电话,联系我们: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场进球彩方法、网络安全

  • 网约车陷阱多 谨防四类风险 2019-07-14
  • 水土保持-近在你身边-图解新闻 2019-07-14
  • 一诚长老:出去走一走 才知道有没有定力 2019-07-09
  • 中方有力回击!美国多个行业喊痛:“加征关税就是对美国消费者征税” 2019-07-07
  • 【学习时刻】参会专家盛小云:坚定文化自信,用高尚的作品引领社会风尚 2019-07-07
  • 安徽省高校公共体艺教育推行俱乐部制 2019-06-23
  • “一带一路”中小企业国际合作高峰论坛在京举行 2019-06-23
  • 端午节期间 拉萨至日喀则增开列车 2019-06-16
  • 朱迪:社会发展新阶段的消费品味特征 2019-06-15
  • 淳安县:构建“大调解”体系 2019-06-15
  • 糖尿病打胰岛素是好还是坏?知道答案的糖友都沉默了 2019-06-08
  • 轩辕坛-聚焦汽车两会热点 2019-06-07
  • 波罗木刻:一把刻刀 点木成“金” 2019-06-06
  • 最高检依法决定对余刚立案侦查 2019-06-05
  • 联播快讯:长江镇江段今起实施12天限时封航 2019-06-05
  • 湖北楚天风彩30选5开奖 35选7玩法 斯特拉斯堡四月气温 维戈塞尔塔球队 空战英豪在线客服 香港六和合曾道人资料 重庆时时彩开奖最快 重庆时时彩走势图 魔幻大财免费试玩 德甲联赛英文