이 글은 2년 이상 지난 이야기에요. 읽으실때 참고!
개발
PHP 개발 일지
개행문자(엔터)나 특정 태그를 제거하는 방법
609 views as of 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 태그의 정보를 추출하는 부분입니다. 포스팅 내용의 이미지를 추출해서 썸네일로 제공하는 등의 방법에서 이용할 수 있습니다.

×