logo

개행문자(엔터)나 특정 태그를 제거하는 방법

Server Side December 31, 2018

디비를 같이 운영하는 웹사이트에서는 저장되거나 화면에 띄워줄 데이터를 가공하는 경우가 발생합니다.

 

저같은 경우는 접속자의 세션값이나 쿠키값을 print_r()을 통해 문자열 데이터로 받았는데 그 문자열 내부에 개행문자와 중복된 띄어쓰기가 많아서 이런 내용을 제거하기 위해 찾아보다가 발견한 방법입니다.

 

일반적으로 PHP에서 접근할 수 있는 방법은 str_replace 함수를 이용하는 방법입니다. 간단하게 개행문자나 띄어쓰기등을 치환할 수 있습니다. 좀더 구조가 복잡한 html 태그는 preg_replace 함수를 이용해 정규식으로 패턴을 뽑아내 치환할 수 있기도 합니다.

 

아래 치환 예제는 출처의 사이트에서 제공했던 자료로써 추후에 이용하기위해 여기에 한 번 더 포스팅합니다.

 

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<?php 
//정규식을 통한 제거
$text = preg_replace('/\r\n|\r|\n/',''$text);
 
//문자열 함수사용으로 제거
$text = str_replace(array("\r\n""\r""\n"),''$text);
$text = strtr($textarray("\r\n"=>''"\r"=>''"\n"=>''));
 
//html 태그 제거
$content = preg_replace("(\<(/?[^\>]+)\>)"""$content);
 
// 를 공백으로 변환
$str = str_replace(" "," "$str);
 
//연속된 공백 1개로
$str = preg_replace("/\s{2,}/"," "$str);
 
//태그안에 style= 속성 제거
$str = preg_replace("/ zzstyle=([^\"\']+) /"," "$str); // style=border:0 따옴표가 없을때
$str = preg_replace("/ style=(\"|\')?([^\"\']+)(\"|\')?/",""$str); // style="border:0" 따옴표 있을때
 
//태그안의 width=, height= 속성 제거
$str = preg_replace("/ width=(\"|\')?\d+(\"|\')?/",""$str);
$str = preg_replace("/ height=(\"|\')?\d+(\"|\')?/",""$str);
 
//img 태그 추출 src 추출
preg_match("/]*src=[\"']?([^>\"']+)[\"']?[^>]*>/i"$str$result);
preg_match_all("/]*src=[\"']?([^>\"']+)[\"']?[^>]*>/i"$str$result);
 
//특수문자 제거
$string = preg_replace("/[ #\&\+\-%@=\/\\\:;,\.'\"\^`~\_|\!\?\*$#<>()\[\]\{\}]/i"""$string);
 
//공백제거
$string = preg_replace('/ /'''$string);
$string = preg_replace("/\s+/"""$string);
 
//반복 입력된 단어 제거
$string = preg_replace("/s(w+s)1/i""$1"$string);
 
//반복 입력된 부호 제거
$string = preg_replace("/.+/i""."$string);
 
//영문자를 제외한 모든 문자 제거
$string = preg_replace("/[^A-Za-z]/"""$string);
 
//영문자와 공백문자(Space)를 제외한 모든 문자를 제거
$string = preg_replace("/[^A-Za-z|\x20]/"""$string);
 
//ASCII 범주 코드 영문+특수문자를 제외한 모든 문자를 제거
$string = preg_replace("/[^\x20-\x7e]/"""$string);
 
//img 태그 추출
preg_match_all("/]*src=[\'\"]?([^>\'\"]+)[\'\"]?[^>]*>/"$img$matchs);
print_r($matchs);
cs

 

위의 내용 중 개인적으로 가장 많이 쓴 것이 맨 아래의 img 태그의 정보를 추출하는 부분입니다. 포스팅 내용의 이미지를 추출해서 썸네일로 제공하는 등의 방법에서 이용할 수 있습니다.