현재 가지고있는 문제는 내가 ascii 문자열과 함께 데이터베이스에서 문자열을 받았습니다. 문자열을 아래 출력으로 변경하는 convertion 함수를 만드는 방법을 알고 싶습니다.문자열을 변환하는 방법 '와 문자열은 표준 charater로 변환
var string = 'Mc'Dought';
웹 페이지에서 Mc'dought의 최종 결과를 출력합니다.
function convert(str){
//Code Here
}
현재 가지고있는 문제는 내가 ascii 문자열과 함께 데이터베이스에서 문자열을 받았습니다. 문자열을 아래 출력으로 변경하는 convertion 함수를 만드는 방법을 알고 싶습니다.문자열을 변환하는 방법 '와 문자열은 표준 charater로 변환
var string = 'Mc'Dought';
웹 페이지에서 Mc'dought의 최종 결과를 출력합니다.
function convert(str){
//Code Here
}
String#replace
을 정규 표현식 및 바꾸기 기능과 함께 사용하십시오. 당신은 문자 형태로 각 코드를 설정하는 String.fromCharCode
를 호출 한 후 정규식을 사용하여 각 HTML 엔티티의 문자 코드를 구문 분석 할 수 있습니다 :
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'Dought">
<BR>
<INPUT Value="Mc'Dought">
<BR>
<SPAN>Mc'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(/&/g, '&')
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/"/g, '"')
.replace(/'/g, "'");
}
일반 스크립트 버전은 필요 이상으로 복잡합니다. 정규 표현식으로 HTML을 파싱하는 것은 [* 권장하지 않습니다 *] (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454)입니다. – RobG
정규 표현식은 당신이 구문 분석하는 것은 일반이 아닌 경우 구문 분석에 특히 잘되지 않습니다. 이 경우 매우 자주 (예 : HTML 구문 분석) HTML이 아닌 경우 일 수 있습니다. – RobG
OP의 입력 문자열을 감안할 때,이 방법은 충분히 적합 해 보였습니다. 비록 태그, 인라인 스타일 및 스크립트 등을 추가 할 때 HTML 파싱이 훨씬 미묘하다는 것을 이해합니다. 이미이 질문을 복제본으로 표시 했으므로 어쨌든이 대답을 삭제하게 될 것입니다. – gyre