728x90

게시판에서 본문을 입력하는 내용은 줄바꿈을 하면서 자료를 입력하게 된다.

DB에서는 자료를 어떻게 저장할까?
사용자가 엔터키를 사용해 문자열을 입력했다고 해도 DB에 저장될 때는 한 라인으로 저장된다.

사용자가 입력한 엔터키는 개행문자(\n)로 대치되어 저장된다.

phpMyAdmin 에서 해당 게시물을 조회하고 해당 게시물에 직접 들어가서 저장된 텍스트 내용을 확인해 보면 알 수 있다.


DB에 존재하는 한 라인 이상의 문자열을 Web browser 의 화면에 출력하면 출력이 될까?

안된다. 이유는?


HTML 문서는 개행문자(\n)를 인식하지 못한다.

HTML 문서는 <br> 태그나 <p> 태그에 의해서만 라인이 구분된다.


Web browser 의 화면에 출력하기 위해서는 반드시 nl2br()함수를 사용해 개행문자(\n)를 <br> 태그로 변환해야 한다.

nl2br()함수는 문자열 내에 개행문자(\n)가 존재한다면 모든 개행문자를 <br>태그로 변환한다.


그러므로 보통 DB에 저장할 때 nl2br()함수를 이용해서 개행문자(\n)를 <br>로 저장한다.


입력된 글에 인용부호나 특수문자가 들어간 경우에는 각 문자 앞에 역슬래쉬(\)를 추가하는 addslashes() 함수를 적용해야 한다.

화면에 출력하는 경우 반드시 stripslashes() 함수를 먼저 적용하고 나중에 nl2br()함수를 적용해야 한다.

stripslashes() 함수는 addslashes() 함수를 통해 표기된 \ 문자를 원래대로 돌려준다.


텍스트 파일이나 CSV 파일을 읽어서 DB에 있는 자료와 중복 여부를 체크해야 하는 경우

문자열에 싱글쿼테이션이 들어가 있다면 어떻게 해야 할까?

DB에는 이미 addslashes() 함수를 적용해서 싱글쿼테이션 문자 앞에 역슬레쉬(\) 문자가 추가되어 있다.

따라서, Select * FROM 테이블명 Where eng =' addslashes($line[2])' 를 해야 한다.


728x90
블로그 이미지

Link2Me

,