개발
백엔드
PHP 개행문자(엔터)나 특정 태그를 제거하는 방법
763 views as of December 31, 2018.
⚠ 이 글은 2년 이상 지난 이야기에요. 읽으실때 참고!
디비를 같이 운영하는 웹사이트에서는 저장되거나 화면에 띄워줄 데이터를 가공하는 경우가 발생합니다.
저같은 경우는 접속자의 세션값이나 쿠키값을 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
0
개의 댓글
백엔드 콜렉션의 다른 글
개발 카테고리의 다른 글
03/04/2019
PHP 배열, 다중배열속의 값 검사
PHP는 배열안의 데이터를 검사하는 메소드가 언어에서 지원해주는것이 있습니다. 검사할 데이터와 대상 배열을 파라미터로 전달...
12/31/2018
Ajax를 이용해 Post 요청하는 방법들
jQuery 웹 프로그래밍을 하다보면 Ajax를 이용한 비동기 로딩을 하는 경우가 발생합니다. 비동기 로딩은 정말 리액티브한 웹을...
12/27/2018
랜덤으로 한글이름 생성하기
목업 페이지를 만들거나 디비에 더미데이터를 넣기위해서 이름을 생성하는 경우가 있습니다. 데이터가 한 두개 정도라면 직접 타...