일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 쿠팡 리뷰
- 쿠팡 브랜드
- 생활용품
- 황사마스크
- 싱글라이프
- 건강식품
- 파닥이
- 장갑/시즌잡화
- 신발
- 쿠팡리뷰
- 가방/잡화
- 식품
- 뷰티
- 스킨케어
- 건강/의료용품
- 2020 설날
- 메이크업
- 바지
- 스포츠/레저
- 아이 메이크업
- 여성패션
- 겨울용품관
- 바지/레깅스
- 자동차용품
- 마스크/방한대
- 쿠팡 리뷰 분석
- 쿠팡 리뷰 모아보기
- 패션마스크
- 쿠팡리뷰분석
- 선물관
- Today
- Total
파닥이
Handlebars 템플릿 사용시 부분적으로 이스케이프 처리 하고싶을시에 본문
예를들어 table에 데이터가 아래값처럼 되어 있고
name | text |
---|---|
홍길동 | <p>안녕하세요.</p> 저는 홍길동입니다. |
철이 | <p>안녕!</p> 나는 철이야~ |
text 컬럼에서 name컬럼값을 찾아 name부분만 하이라이팅을 처리해서 style를 적용한 태그를 감싸 웹화면에 표현하고 싶을때 방법을 포스팅 해보겠습니다.
sql를 조작 가능하다고 가정하에 mysql기준으로
concat함수와 SUBSTRING_INDEX함수를 활용하여 밑에 처럼 값을 뽑아 낼수 있습니다.
<p>안녕하세요. 저는 </p> <span style="color:red;">홍길동</span>입니다.
Handlebars 템블릿으로 해당값을 {{text}}로 처리시 웹화면에서는 바로 위 텍스트처럼 그대로 출력되지만,
<p>안녕하세요. </p>저는 <span style="color:red;>홍길동 입니다.
이스케이프 처리를 해주는 {{{text}}}를 써주면
안녕하세요.
저는 홍길동입니다.
이렇게 출력이 됩니다. 하지만 제가 원하는 출력값이 아니기 때문에
replace 함수를 이용하여 기존에 있는 < 와 > 를 각각 <
그리고 >
로
변환을 해줍니다. (참고로 <만 이스케이프 처리해도 됩니다.)
그러면 sql 결과는 아래처럼 나올것이다.
<p>안녕하세요. </p>저는 <span style="color:red;>홍길동</span> 입니다.
이렇게 나온 결과를 {{{text}}}를 써주면
<
와 >
는 각각 < 와 > 로 변환이 되고,
새로 감싼 태그는 태그로 인식이 되어 우리가 원하는 결과가 출력이 된다.
<p>안녕하세요. </p>저는 홍길동입니다.
참고로 mybatis를 사용한다면 쿼리 안에 <
와 >
를 이스케이프 처리해주기 때문에 <![CDATA[]]> 로 감싸주어야 한다.
그리고 concat으로 문자열을 합칠시 기존 태그를 변환후 합쳐야 함을 유의해야 한다.
아래 쿼리를 참고하면 된다.
<![CDATA[
CONCAT(
SUBSTRING_INDEX(REPLACE(REPLACE(TEXT , '<', '<'), '>', '>'), NAME, 1)
, CONCAT("<span style='color:red;'>", NAME , "</span>")
, SUBSTRING_INDEX(REPLACE(REPLACE(TEXT , '<', '<'), '>', '>'), NAME, -1)
)
]]> AS FORMAT_TEXT
'IT > JavaScript' 카테고리의 다른 글
[jquery] form 태그 활용 (0) | 2019.04.20 |
---|---|
[jquery ] promise / when (0) | 2019.04.20 |
Handlebars (0) | 2019.04.04 |
[javascript] URL에서 parameter 제거하기 (0) | 2019.03.25 |
[javascript] ES6 (ES2015) 에 새로 추가된 let / const 에 차이점 (0) | 2019.03.19 |