使用富文本編輯器存放到數據庫中的內容是HTML標籤,上傳圖片時img標籤存放的是相對路徑,所以能夠在查看商品詳情時將HTML標籤中的img的src路徑改成全路徑便可。
首先寫一個工具類,改變img的src值
package com.irs.util;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* html處理工具類
* @author huweijun
* @date 2016年7月13日 下午7:25:09
*/
public class HtmlUtils {
/**
* 替換指定標籤的屬性和值
* @param str 須要處理的字符串
* @param tag 標籤名稱
* @param tagAttrib 要替換的標籤屬性值
* @param startTag 新標籤開始標記
* @param endTag 新標籤結束標記
* @return
* @author huweijun
* @date 2016年7月13日 下午7:15:32
*/
public static String replaceHtmlTag(String str, String tag, String tagAttrib, String startTag, String endTag) {
String regxpForTag = "<\\s*" + tag + "\\s+([^>]*)\\s*" ;
String regxpForTagAttrib = tagAttrib + "=\\s*\"([^\"]+)\"" ;
Pattern patternForTag = Pattern.compile (regxpForTag,Pattern. CASE_INSENSITIVE );
Pattern patternForAttrib = Pattern.compile (regxpForTagAttrib,Pattern. CASE_INSENSITIVE );
Matcher matcherForTag = patternForTag.matcher(str);
StringBuffer sb = new StringBuffer();
boolean result = matcherForTag.find();
while (result) {
StringBuffer sbreplace = new StringBuffer( "<"+tag+" ");
Matcher matcherForAttrib = patternForAttrib.matcher(matcherForTag.group(1));
if (matcherForAttrib.find()) {
String attributeStr = matcherForAttrib.group(1);
matcherForAttrib.appendReplacement(sbreplace, startTag + attributeStr + endTag);
}
matcherForAttrib.appendTail(sbreplace);
matcherForTag.appendReplacement(sb, sbreplace.toString());
result = matcherForTag.find();
}
matcherForTag.appendTail(sb);
return sb.toString();
}
public static void main(String[] args) {
StringBuffer content = new StringBuffer();
content.append("<ul class=\"imgBox\"><li><img id=\"160424\" src=\"uploads/allimg/160424/1-160424120T1-50.jpg\" class=\"src_class\"></li>");
content.append("<li><img id=\"150628\" src=\"uploads/allimg/150628/1-15062Q12247.jpg\" class=\"src_class\"></li></ul>");
System.out.println("原始字符串爲:"+content.toString());
String newStr = replaceHtmlTag(content.toString(), "img", "src", "src=\"http://junlenet.com/", "\"");
System.out.println(" 替換後爲:"+newStr);
}
}
在查看商品詳情時只需調用工具類改變img的src路徑便可
複製代碼