⚠ 이 글은 2년 이상 지난 이야기에요. 읽으실때 참고!
개발
Backend
PHP 개행문자(엔터)나 특정 태그를 제거하는 방법
693 views as of December 31, 2018.
디비를 같이 운영하는 웹사이트에서는 저장되거나 화면에 띄워줄 데이터를 가공하는 경우가 발생합니다.
저같은 경우는 접속자의 세션값이나 쿠키값을 print_r()을 통해 문자열 데이터로 받았는데 그 문자열 내부에 개행문자와 중복된 띄어쓰기가 많아서 이런 내용을 제거하기 위해 찾아보다가 발견한 방법입니다.
일반적으로 PHP에서 접근할 수 있는 방법은 str_replace 함수를 이용하는 방법입니다. 간단하게 개행문자나 띄어쓰기등을 치환할 수 있습니다. 좀더 구조가 복잡한 html 태그는 preg_replace 함수를 이용해 정규식으로 패턴을 뽑아내 치환할 수 있기도 합니다.
아래 치환 예제는 출처의 사이트에서 제공했던 자료로써 추후에 이용하기위해 여기에 한 번 더 포스팅합니다.
<?php
//정규식을 통한 제거
$text = preg_replace('/\r\n|\r|\n/','', $text);
//문자열 함수사용으로 제거
$text = str_replace(array("\r\n", "\r", "\n"),'', $text);
$text = strtr($text, array("\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);
Copy
위의 내용 중 개인적으로 가장 많이 쓴 것이 맨 아래의 img 태그의 정보를 추출하는 부분입니다. 포스팅 내용의 이미지를 추출해서 썸네일로 제공하는 등의 방법에서 이용할 수 있습니다.
#개발 #PHP #개행문자 #앤터 #태그 제거 #preg_replace
0
개의 댓글
Collection. Backend
01.
PHP 개행문자(엔터)나 특정 태그를 제거하는 방법
2018
02.
PHP 배열, 다중배열속의 값 검사
2019
03.
PHP 시간 차 계산
2019
04.
PHP 공인 IP 주소 얻어오기
2019
05.
PHP 문자열 중 url만 걸러내서 태그를 씌워 반환
2019
06.
PHP 파일 열고 처음부터 다시 쓰기
2019
07.
PHP 세션 유지시간 변경
2019
08.
PHP 이미지 용량 리사이징
2019
09.
MySQL CONCAT 기능에 대해서
2019
10.
MySQL GROUP_CONCAT 기능으로 쿼리 결과를 하나로 합치기
2019
11.
PHP 사이트맵 제작 (1)
2024
12.
PHP 사이트맵 제작 (2)
2024