반응형
요약: 정규식으로 HTML 태그를 삭제하고 검색한다.
사용자의 눈으로
게시판 글 등록 시 위지윅 HTML 에디터 (summernote, CK Editor, 네이버 스마트에디터 등)를 사용해서 글을 등록하면 (당연하게도)HTML이 함께 저장된다. 에디터에 따라 <style> ... </style>
내용도 함께 저장되는 경우도 있다.
개발자가 보기에는 너무나 당연하지만, 사용자가 보기에는 내용에 안보이는 것이 검색되면 오류라고 생각한다.
예를 들어
line_friends.png
를 에디터의 이미지 첨부했다.- 저장된 콘텐츠는 다음과 같다.
<img src="imagepath/line_friends.png"><br>라인 캐릭터 졸귀탱!
friend
라는 단어로 검색했다.- 사용자가 보기에는
라인 캐릭터 졸귀탱!
밖에 안 보이는데 해당 게시물이 검색된다.
태그 지우고 텍스트 내용만 보기
HTML을 제외하고 게시물을 보기 위해 정규식 REPLACE를 사용해보았다.
Maria DB 기준으로
select post_id
, post_content
, REGEXP_REPLACE(post_content, '<(/)?(img|label|table|thead|tbody|tfoot|tr|td|p|br|div|span|font|strong|b)(.|\s|\t|\n|\r\n)*?>', '') as post_text_content
from board_post
<.../> 전체를 대상으로 하지 말고, 이처럼 에디터에서 자동 입력되는 태그들만 명시적으로 적어서 없애주는 것이 좋을 것 같다. MARIA 말고도 정규식을 사용하는 REPLACE는 다른 DBMS도 다 있을 것 같다.
물론 이렇게 하면 성능이 매우 떨어진다. 인덱스를 만들든 뭐든 그 다음은 알아서 하면 되겠다.
HTML 데이터를 정리하는 일은 레거시 시스템의 데이터가 깨끗한 경우는 잘 없으므로 마이그레이션 하면서 할 경우도 많다. 예컨대 부터 전체가 들어있다던가 ㅠㅠ 뭘 하든 정규식 사용은 크게 다르지 않을 것이다.
- 기획 단계에서 내용이 바뀌어서 실제 적용은 안 함.
반응형
'프로그래밍 > 이것저것 일하면서' 카테고리의 다른 글
인증 없는 SMTP, JavaMailSender에서 MailAuthenticationException 발생 (0) | 2019.08.08 |
---|---|
크롬 브라우저 비밀번호 자동완성 방지 (autocomplete 불가 시) (0) | 2019.05.09 |
Tomcat 8 / tomcat rfc 7230 rfc 3986 오류 (0) | 2018.10.02 |
윈도10 Bash에서 C드라이브 접근하기 (0) | 2018.09.19 |
React 공식 사이트, 문서, 튜토리얼 한글 번역 (React, React.js, React korea) (0) | 2018.09.17 |