2017-03-25 5 views
0

현재 가지고있는 문제는 내가 ascii 문자열과 함께 데이터베이스에서 문자열을 받았습니다. 문자열을 아래 출력으로 변경하는 convertion 함수를 만드는 방법을 알고 싶습니다.문자열을 변환하는 방법 '와 문자열은 표준 charater로 변환

var string = 'Mc'Dought'; 

웹 페이지에서 Mc'dought의 최종 결과를 출력합니다.

function convert(str){ 
//Code Here 
} 

답변

0

String#replace을 정규 표현식 및 바꾸기 기능과 함께 사용하십시오. 당신은 문자 형태로 각 코드를 설정하는 String.fromCharCode를 호출 한 후 정규식을 사용하여 각 HTML 엔티티의 문자 코드를 구문 분석 할 수 있습니다 :

+0

정규 표현식은 당신이 구문 분석하는 것은 일반이 아닌 경우 구문 분석에 특히 잘되지 않습니다. 이 경우 매우 자주 (예 : HTML 구문 분석) HTML이 아닌 경우 일 수 있습니다. – RobG

+0

OP의 입력 문자열을 감안할 때,이 방법은 충분히 적합 해 보였습니다. 비록 태그, 인라인 스타일 및 스크립트 등을 추가 할 때 HTML 파싱이 훨씬 미묘하다는 것을 이해합니다. 이미이 질문을 복제본으로 표시 했으므로 어쨌든이 대답을 삭제하게 될 것입니다. – gyre

0

var string = 'Mc'Dought' 
 

 
function convert (string) { 
 
    return string.replace(/&#(?:x([\da-f]+)|(\d+));/ig, function (_, hex, dec) { 
 
    return String.fromCharCode(dec || +('0x' + hex)) 
 
    }) 
 
} 
 

 
console.log(convert(string))
은 당신이 무엇을 물어주의하십시오.

작은 따옴표의 이스케이프 시퀀스가 ​​표시됩니다. 페이지에 던지면 제대로 표시됩니다.

반면에 실제 작은 따옴표로 변환하려고하면 문제가 발생할 수 있습니다. 그 결과 볼 수

체크 아웃이 코드 : 당신은이 모든 것을 이해하고 아직도 (언 이스케이프하려면, 그러나

<INPUT Value="Mc&#039;Dought"> 
 
<BR> 
 
<INPUT Value="Mc'Dought"> 
 
<BR> 
 
<SPAN>Mc&#039;Dought</SPAN> 
 
<BR> 
 
<SPAN>Mc'Dought</SPAN> 
 
<BR> 
 
<INPUT Value='Mc'Dought'> <!-- Problems!! --> 
 
<BR> 
 
<SPAN>Mc'Dought</SPAN>

를 예를 들어, 당신은 설정하는 문자열을 사용합니다 title 또는 alert을 발행하십시오.) & # 039를 바꾸는 대신 허용 된 HTML-unescape 방법을 사용하는 것이 좋습니다. this answer을 참조하십시오.

JQuery와 :

function escapeHtml(unsafe) { 
    return $('<div />').text(unsafe).html() 
} 

function unescapeHtml(safe) { 
    return $('<div />').html(safe).text(); 
} 

일반 자바 스크립트 :

function unescapeHtml(safe) { 
    return safe.replace(/&amp;/g, '&') 
     .replace(/&lt;/g, '<') 
     .replace(/&gt;/g, '>') 
     .replace(/&quot;/g, '"') 
     .replace(/&#039;/g, "'"); 
} 
+0

일반 스크립트 버전은 필요 이상으로 복잡합니다. 정규 표현식으로 HTML을 파싱하는 것은 [* 권장하지 않습니다 *] ​​(http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454)입니다. – RobG