PHP 문자열 공백 제거 방법 (trim, pregreplace)
페이지 정보

본문
PHP 문자열 공백 제거 방법 (trim, preg_replace)
Q.
Q.
그누보드 운영 및 PHP 개발 시 문자열에서 불필요한 공백을 효과적으로 제거하기 위해 trim()과 preg_replace() 함수를 사용하는 방법과 차이점을 살펴봅니다.
PHP 문자열 양 끝 공백 제거 방법
PHP에서 문자열의 시작과 끝에 있는 불필요한 공백이나 제어 문자를 제거하려면 trim() 함수를 사용합니다. 주로 사용자 입력이나 외부 데이터를 처리할 때 데이터의 일관성을 유지하기 위해 활용됩니다.
기본 사용법
trim() 함수는 투입 변수로 공백을 제거하고 싶은 텍스트를 전달받아 양쪽 끝의 공백(공백, 탭, 개행 등)을 제거한 후 반환합니다.
$text1 = "\t\tThese are a few words:)... ";
$trimmed = trim($text1);
echo $trimmed;
관련 함수
- ltrim(): 문자열의 시작(왼쪽) 부분에 있는 공백이나 특정 문자를 제거할 때 사용합니다.
- rtrim(): 문자열의 끝(오른쪽) 부분에 있는 공백이나 특정 문자를 제거할 때 사용합니다.
PHP에서 문자열 중간 공백 제거하기
문자열의 중간에 있는 공백을 모두 제거하려면 preg_replace() 함수와 정규식을 함께 사용해야 합니다. trim() 함수는 문자열의 양 끝 공백만 제거하므로 중간 공백에는 영향을 주지 않습니다.
preg_replace를 이용한 모든 공백 제거 방법
preg_replace()에 /\s+/ 패턴을 지정하면 문자 사이의 공백을 모두 없앨 수 있습니다.
<?php
$in = " tood net ";
$out = preg_replace("/\s+/", "", $in);
echo $out;
// 결과: toodnet
?>
- 주의 사항:
preg_replace로 문자 사이의 공백을 모두 제거할 때 HTML 공백 엔티티인 는 제거되지 않으므로, 데이터에 포함되어 있다면 별도로 처리해야 합니다.
PHP 정규식 공백 제거 시 HTML 공백 엔티티( ) 처리 안내
preg_replace 함수를 사용하여 문자열 내의 공백을 제거할 때, HTML 공백 특수문자인 는 일반 공백 문자로 인식되지 않아 정규식만으로는 제거되지 않습니다.
확인 및 대안
- 제한 사항:
preg_replace("/\s+/", "", $in)등의 패턴은 일반 공백 및 제어 문자(\t,\n,\r등)는 제거할 수 있으나 는 직접 지우지 못합니다. - 다음 행동:
가 포함된 문자열을 정제하려면preg_replace를 실행하기 전에str_replace(" ", " ", $str)함수를 사용하여 를 일반 공백이나 빈 문자열로 먼저 변환한 뒤 공백 제거 작업을 진행해야 합니다.
PHP 공백 제거 방법 선택 기준
| 내 상황 | 우선할 판단 | 다음 행동 |
|---|---|---|
| 회원가입 폼이나 게시물 입력값의 앞뒤 불필요한 공백을 없애야 할 때 | trim() 함수 적용 | trim($str) 또는 ltrim(), rtrim()을 사용하여 양 끝 또는 한쪽 끝의 제어 문자를 제거 |
| 문장이나 단어 사이에 포함된 모든 공백을 한 번에 없애야 할 때 | 정규식을 활용한 preg_replace 적용 | preg_replace("/s+/", "", $str) 코드를 실행하여 중간 공백 제거 |
HTML 코드 내 엔티티가 포함되어 정규식으로 지워지지 않을 때 | 문자열 치환 선행 처리 | str_replace로 를 일반 공백이나 빈값으로 먼저 변환한 뒤 preg_replace 연동 |
실전 FAQ
Q. trim() 함수를 쓸 때 한글 문자열 처리에 주의해야 하는 이유는 무엇인가요?
trim()함수는 매개변수로 지정된 문자를 지울 때 멀티바이트(Multi-byte) 문자셋을 완벽하게 지원하지 않으므로, 한글 조합 글자를 특정 문자 제거용으로 지정할 때는 의도치 않은 동작이 발생할 수 있습니다. 일반적인 앞뒤 공백 제거 목적으로는 문제없이 사용할 수 있습니다.
Q. preg_replace로 공백을 지웠는데도 빈 공간이 남는다면 어떤 부분을 확인해야 하나요?
- 일반적인 스페이스 바 공백이나 탭(
\t), 개행(\n)은/\s+/패턴으로 제거되지만, 웹 스크랩이나 HTML 출력물에 흔히 섞여 들어오는 는 일반 공백 문자가 아니여서 정규식만으로는 사라지지 않습니다. 이 경우str_replace를 이용해 를 먼저 치환해야 합니다.
참고자료
기타 참고자료
- codingeverybody.kr — PHP trim() 함수 – 문자열의 양쪽 끝에서 공백 또는 지정된 문자열 제거 - 코딩에브리바디
- triki.net — PHP 텍스트의 앞, 뒤 공백을 제거하는 trim 함수 사용법과 응용법 – 모두의매뉴얼
- youngdev57.tistory.com — PHP 문자열 함수 (1) - trim(), strtoupper(), strtolower() — youngdev
- databook.tistory.com — dirtybit의 외부기억장치 :: php 문자열 제거 각종 정규식
- happyjung.com — string 공백 제거 , preg_replace , trim > 기술자료 | 해피정닷컴
- 이전글PHP mysqlfetcharray와 mysqlfetchobject 차이점과 그누보드 레거시 코드 적용법 26.10.01
- 다음글PHP addslashes() 함수를 이용한 작은따옴표 데이터 삽입 및 SQL 이스케이프 처리 26.09.30
댓글목록
등록된 댓글이 없습니다.