일반 텍스트 하이퍼텍스트

3797 단어 htmltxtescape
본 고 는 하이퍼텍스트 를 하이퍼텍스트 로 변환 하 는 방법 을 소개 하 며, 하이퍼텍스트 내용 을 HTML 페이지 에서 미리 보 는 효과 와 원본 미리 보기 의 효과 가 일치 하도록 한다.
이 변환 은 정규 표현 식 검색 으로 바 꿀 수 있 습 니 다. 구체 적 인 규칙 은 다음 과 같 습 니 다.
  • HTML 에서 5 개의 기본 보존 문자 (<, >, &, ",") 를 대응 하 는 HTML 실체 ("& lt;", "& gt;", "& amp;", "& quot;", "& apos;") 로 변환 합 니 다
  • 연속 n (n > = 2) 개의 공백 부호 (U + 0020) 를 n 개의 비 중단 공백 부호 (U + 00A0) 의 HTML 실체 ("& nbsp;")
  • 로 대체 합 니 다.
  • 탭 문자 (U + 0009) 를 n (n 은 보통 2, 4 또는 8) 개 '& nbsp' 로 교체 합 니 다."
  • Windows 줄 바 꿈 문자 CR LF (U + 000D U + 000A) 또는 Unix 줄 바 꿈 문자 LF (U + 000A) 를 HTML 줄 바 꿈 태그 ("< br / >")
  • 로 바 꿉 니 다.
    주: 이름 이 붙 은 실체 "& apos;"또한 문자 코드 의 실체 형식" & \ # 39; "로 구형 Internet Explorer 를 호 환 할 수 있 습 니 다.
    첨부:
    일반 텍스트 하이퍼텍스트 자바 구현
    private static Pattern htmlKeychars=Pattern.compile("[<>&\"']");
    private static Pattern htmlKeycharsWhitespace=Pattern.compile("\r
    | {1,}|[<>&\"'\t
    ]"); private static String encodeHTML(String s,Pattern p){ Matcher m=p.matcher(s); StringBuffer sb=new StringBuffer(s.length()+(s.length()>>1)); String re=null; while(m.find()){ String $0=m.group(0); switch($0.charAt(0)){ case '<':re="&lt;";break; case '>':re="&gt;";break; case '&':re="&amp;";break; case '"':re="&quot;";break; case '\'':re="&apos;";break; case ' ':re=StringUtils.repeat("&nbsp;",$0.length());break; case '
    ': case '\r':re="<br/>";break; case '\t':re="&nbsp;&nbsp;&nbsp;&nbsp;";break; } m.appendReplacement(sb.append(re), ""); } return m.appendTail(sb).toString(); } public static String encodeHTML(String s){ if(s==null||s.length()==0) return s; return encodeHTML(s,htmlKeycharsWhitespace); } public static String encodeHTMLAttribute(String s){ if(s==null||s.length()==0) return s; return encodeHTML(s,htmlKeychars); }

    일반 텍스트 하이퍼텍스트 JavaScript 구현:
    (function(global){
    	function StringRepeat(s,c){
    		switch(c){
    		case 0:return "";
    		case 1:return s;
    		case 2:return s+s;
    		default:
    			var r=repeat(s,c>>>1);
    			return (c&1)==0?r+r:r+r+s;
    		}
    	}
    	var repeat=String.prototype.repeat||function repeat(count){
    		if(this==null)
    			throw new TypeError("String.prototype.repeat called on null or undefined");
    		if(count<0||count>0xFFFFFFFF)
    			throw new RangeError("Invalid count value");
    		return StringRepeat(String(s),c>>>0);
    	};
    	var escapeHTML=function(s,r){
    		if(s.length==0)
    			return s;
    		return s.replace(r,function($0){
    			var re="";
    			switch($0.charAt(0)){
    			case '<':re="&lt;";break;
    			case '>':re="&gt;";break;
    			case '&':re="&amp;";break;
    			case '"':re="&quot;";break;
    			case '\'':re="&apos;";break;
    			case ' ':re=repeat.call("&nbsp;",$0.length);break;
    			case '
    ': case '\r':re="<br/>";break; case '\t':re="&nbsp;&nbsp;&nbsp;&nbsp;";break; } return re; }); }; function encodeHTML(s){ return escapeHTML(String(s),/\r
    | {1,}|[<>&"'\t
    ]/g); } function encodeHTMLAttribute(s){ return escapeHTML(String(s),/[<>&"']/g); } global.encodeHTML=encodeHTML; global.encodeHTMLAttribute=encodeHTMLAttribute; }(this));

    좋은 웹페이지 즐겨찾기