개발
백엔드
PHP 개행문자(엔터)나 특정 태그를 제거하는 방법
⚠ 이 글은 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를 이용한 비동기 로딩을 하는 경우가 발생합니다. 비동기 로딩은 정말 리액티브한 웹을 구성하는데 있어 필수 불가결이지만 클라이언트 성능이 따라 어떻게 작용될지 모르는 사항이라... 이리저리 생각하고 따져봐야할게 많기도합니다. 그만큼 여러가지 상황에 대한 UI/UX 서포트도...
12/27/2018
랜덤으로 한글이름 생성하기
목업 페이지를 만들거나 디비에 더미데이터를 넣기위해서 이름을 생성하는 경우가 있습니다. 데이터가 한 두개 정도라면 직접 타이핑해서 넣겠지만 넣어야할 데이터가 100개이상만 되도 수작업은 사실상 불가능하겠죠. 단순히 모든 한글글자중에 랜덤으로 3개만 섞어서 출력하면 될거같은데... 생각보다 한글에는 쓰지않는...