zoukankan      html  css  js  c++  java
  • 邮件链接替换

    // 将href外站的链接换为302跳转
        public static String formatA(String src, String patternStr, String replace) {
            if (StringUtil.isBlank(src) || StringUtil.isBlank(patternStr) || StringUtil.isBlank(replace)) {
                return src;
            }
            
            // html的标签属性肯定是以单引号或双引号包含
            Pattern p = Pattern.compile(patternStr, Pattern.CASE_INSENSITIVE);
            Matcher m = p.matcher(src);
            while (m.find()) {
                String a = m.group();
                // 本站内部链接不处理
                /*if (a.contains("javaniu") || a.contains("zuidaima") || a.contains("javascript:void") || a.matches("href=['|"]?\/")) {
                    continue;
                }*/
                String _url = m.group(2);
                String url = _url;
    
                try {
                    url = URLEncoder.encode(_url, "utf-8");
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }
                url = String.format(replace, url);
                // 将target属性替换为"",以便所有外链都是_blank打开
                String targetReg = "target=['|"].*?['|"']";
                String prefix = m.group(1).replaceAll(targetReg, "");
                String suffix = m.group(3).replaceAll(targetReg, "");
                // 整段匹配不会出现错误
                String _a = "<a" + prefix + " href='" + url + "'" + suffix + " target='_blank'>";
                src = src.replace(a, _a);
            }
            
            return src;
        }
    
    
        // 将添加的链接去除
        public static String formatABackUp(String src, String patternStr) {
            if (StringUtil.isBlank(src) || StringUtil.isBlank(patternStr)) {
                return src;
            }
    
            // html的标签属性肯定是以单引号或双引号包含
            Pattern p = Pattern.compile(patternStr, Pattern.CASE_INSENSITIVE);
            Matcher m = p.matcher(src);
            while (m.find()) {
                String a = m.group();
                // 本站内部链接不处理
                /*if (a.contains("javaniu") || a.contains("zuidaima") || a.contains("javascript:void") || a.matches("href=['|"]?\/")) {
                    continue;
                }*/
                String _url = m.group(2);
                String url = _url;
    
                try {
                    url = URLDecoder.decode(_url, "utf-8");
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }
                //https://tj422637.onloon.co/callback/mail/trace/hit?messageID=mid:4191b2fd09274c4ba4e6811c26dc95c4&extMessageID=extmid:21147d3a3cb14687afb9b48e28f6f879&redirect_url=https%3A%2F%2Fwww.baidu.com%2F
    //            url = String.format(replace, url);
                url = url.substring(url.indexOf("redirect_url=") + 13);
                // 将target属性替换为"",以便所有外链都是_blank打开
                String targetReg = "target=['|"].*?['|"']";
                String prefix = m.group(1).replaceAll(targetReg, "");
                String suffix = m.group(3).replaceAll(targetReg, "");
                // 整段匹配不会出现错误
                String _a = "<a" + prefix + " href='" + url + "'" + suffix + ">";
                src = src.replace(a, _a);
            }
    
            return src;
        }
    public static void main(String[] args) {
            String replace = "http://trace" + "?messageID=" + "123";
            if (StringUtil.isNotBlank("456")) {
                replace += "&extMessageID=" + "456";
            }
            replace += "&redirect_url=%s";
    
            String src = "<table width="100%" border="0" cellspacing="0" cellpadding="0" bgcolor="#fff" style="text-align: left"><tbody><tr><td valign="top" style="100%;"><p style="font-size:18px;line-height:30px;text-align:justify;">本周五务必上线,<a href="http://www.baidu.com">如有问题</a>,及时通知!</p></td></tr><tr height="20"></tr></tbody></table>";
            //添加链接
            src = formatA(src, A_HREF_URL, replace);
            System.out.println(src);
            //去除链接
            src = formatABackUp(src, A_HREF_URL);
            System.out.println(src);
        }
    <table width="100%" border="0" cellspacing="0" cellpadding="0" bgcolor="#fff" style="text-align: left"><tbody><tr><td valign="top" style="100%;"><p style="font-size:18px;line-height:30px;text-align:justify;">本周五务必上线,<a href='http://trace?messageID=123&extMessageID=456&redirect_url=http%3A%2F%2Fwww.baidu.com' target='_blank'>如有问题</a>,及时通知!</p></td></tr><tr height="20"></tr></tbody></table>
    <table width="100%" border="0" cellspacing="0" cellpadding="0" bgcolor="#fff" style="text-align: left"><tbody><tr><td valign="top" style="100%;"><p style="font-size:18px;line-height:30px;text-align:justify;">本周五务必上线,<a href='http://www.baidu.com'  target='_blank'>如有问题</a>,及时通知!</p></td></tr><tr height="20"></tr></tbody></table>
  • 相关阅读:
    第3 章流程控制语句
    第7 章面向对象程序设计
    linux运维常用命令
    第1 章初识Python
    nginx安装与部署
    Linux下软件安装的几种方式
    MAYA 多线程
    Maya pywin32
    python 中调用windows系统api操作剪贴版
    Maya QT interfaces in a class
  • 原文地址:https://www.cnblogs.com/wanhua-wu/p/9597375.html
Copyright © 2011-2022 走看看