본문 바로가기
📂 언어/◾ PHP

[PHP] 문자열에서 개행 문자, HTML 엔터티, 태그 삭제하는 방법

by 이 정규 2023. 8. 30.
728x90
반응형

 

 

개행 문자

개행 문자란 텍스트의 한 줄이 끝남을 표시하는 문자 또는 문자열이다.
개행 문자, 줄바꿈 문자, EOL(End-Of-Line)과 같은 뜻이다. 기종이나 운영 체제에 따라 새줄 문자를 나타내는 코드가 다를 수도 있다. 그래서 텍스트를 다른 시스템으로 전송할 때 새줄 문자의 치환 작업도 필요하다.

나는 회사에서 윈도우로 개발을 진행하고 있기 때문에, 윈도우 운영 체제를 기반으로 개행 문자를 PHP에서 제거하는 방법을 소개하겠다. 우선 문제가 된 문자열이다.

<p>이달의 소녀와 함께하는 퀴즈대결 컨셉 + 전문가 강의 콜라보레이션<br />
아이돌의 재기발랄한 퀴즈 대결 컨셉을 통해, 지금까지 본 적 없는 &ldquo;
방송예능형&rdquo;&nbsp; 직장 내 장애인 인식개선 교육을 만나보자!<br />
걸그룹의 방송형 예능 X 전문가의 전문적 강의의 고품격 콜라보레이션으로 
뻔한 학습 내용을 뻔하지 않게! 다채로운 코너 구성의 직장 내 장애인 인식개선 교육!</p>

 

위 문자열에서 개행 문자는 보이지 않지만 \r\n이 출력에서 보였기 때문에 제거를 해주었다. preg_replace() 함수는 파이썬에서 replace() 함수와 같은 역할을 한다. 인자로 제거할 패턴, 대치할 문자, 대상 문자열을 받는다.

// preg_replace(pattern, replacement, string)
preg_replace('/\r\n|\r|\n/', '', string)

 

HTML 엔터티

특수코드 문자표라고도 하는 엔터티(Entity)는 HTML 문서에서 특수 문자를 입력하기 위해 사용하는 코드이다.
요즘은 UTF-8을 주로 이용하기 때문에 특수문자가 깨지지 않지만 W3C는 엔티티 코드가 아닌 특수 문자는 오류로 인식하기 때문에 특수 문자는 엔티티 코드로 작성하는 것이 좋다고 한다.

주로 사용되는 엔터티는 아래 표와 같다.

엔티티 코드 문자식 표현(Entity Code)  숫자식 표현(Entity Number) 
&lt;  &#8249; 
>
© &copy; &#169;
 "   &quot;  &#34; 
 &  &amp;  &#38;
(공백) &nbsp; &#160; 

 

위 문자열에서는 공백을 나타내는 &nbsp; 왼쪽 쌍따옴표를 나타내는 &ldquo;와 오른쪽 쌍따옴표를 나타내는 &dquo;가 있다. 이를 제거해주기 위해서는 html_entity_decode() 함수를 이용해서 제거해주면 된다. 특별히 다른 인자를 받는 것 같지는 않고, decode 함수가 있듯이 encode 함수도 있다는 정도만 알고 있으면 좋을 것 같다.

// html_entity_decode(string)
html_entity_decode(string)

 

HTML 태그

HTML 언어를 모르더라도 인터넷을 사용하다보면 자연스럽게 HTML 태그들을 본 적이 있을 것 같다. 태그(tag)는 페이지 요소를 만들 때 사용한다. 문단 태그 <p>처럼, 요소 이름을 부등호 사이에 넣어서 태그를 구성할 수 있다. 닫는 태그는 이름 앞에 슬래시 문자를 </p>와 같이 포함하며, 빈 요소의 경우 닫는 태그가 필요하지 않으며 지정해서도 안된다. 태그에 특성을 지정하지 않으면 기본값을 사용한다.

위 문자열에서는 <p> 태그와 <br> 태그가 사용됐다. <p> 태그는 위 설명과 같이 요소를 만들 때 사용하고, <br> 태그는 줄바꿈을 해준다. 제거하는 방법은 아래와 같다.

// strip_tags(string)
strip_tags(string)

 

마치며

오늘은 PHP에서 문자열을 가져와 전처리 하는 방법을 알아봤다. 더 다양한 방법들이 있겠다만, 이번 포스팅에서는 preg_replace(), strip_tags(), html_entity_decode() 함수를 알아봤다. 문제가 됐던 문자열의 처리 후 모습도 함께 보여드리며 글을 마친다.

preg_replace('/\r\n|\r|\n/','' ,strip_tags(html_entity_decode(string)))

이달의 소녀와 함께하는 퀴즈대결 컨셉 + 전문가 강의 콜라보레이션
아이돌의 재기발랄한 퀴즈 대결 컨셉을 통해, 지금까지 본 적 없는 “방송예능형”
직장 내 장애인 인식개선 교육을 만나보자!걸그룹의 방송형 예능 X 전문가의 전문적
강의의 고품격 콜라보레이션으로 뻔한 학습 내용을 뻔하지 않게! 다채로운 코너 구성의 
직장 내 장애인 인식개선 교육!
728x90
반응형

댓글