본문 바로가기

비개발자의 개발 일지

현장 팀장에서 수출 ERP까지 — AI와 함께 시스템을 만든 기록

시리즈 보기
php

PHP trim() — 양끝 공백 제거 · ltrim · rtrim · 커스텀 문자 완전 정리

by 왕진 2026. 7. 10.
반응형

 

 

Web Development · PHP 문자열 함수

PHP trim() — 문자열 양끝 공백을 제거하는 함수

ltrim · rtrim · 커스텀 문자 제거 · 폼 입력 처리 필수 패턴 완전 정리
시작 오늘 분석할 코드

trim()은 문자열의 앞뒤 양쪽에 있는 공백 및 특수 공백 문자를 제거하는 함수입니다. 사용자 폼 입력을 처리할 때 의도치 않은 공백 때문에 검증이 실패하거나 DB 조회가 안 되는 문제를 예방하는 첫 번째 방어선입니다.

<?php $string = " 1234567890 "; // ^ 앞에 공백 2개 ^ 뒤에 공백 2개 $result = trim($string); // 앞뒤 공백이 제거됨 → "1234567890" echo strlen($string); // 14 (공백 포함) echo strlen($result); // 10 (공백 제거) ?>
실제 출력 미리보기
__1234567890__
→ trim() →
1234567890
_ = 공백 문자. trim() 적용 후 앞뒤 공백 제거, 가운데 내용은 그대로
용어 용어 정리
trim()문자열 앞뒤 양쪽의 공백 및 공백류 문자 제거. 중간 공백은 건드리지 않음
ltrim()왼쪽(앞)만 제거 — Left trim. 오른쪽은 그대로
rtrim()오른쪽(뒤)만 제거 — Right trim. 왼쪽은 그대로
공백류 문자스페이스 ' ', 탭 \t, 줄바꿈 \n, 캐리지리턴 \r, 수직탭 \v, null \0
커스텀 문자두 번째 인수로 제거할 문자 목록 직접 지정. "abc"면 a, b, c 제거
인플레이스 아님trim()은 새 문자열 반환. 원본은 변경되지 않음
중간 공백 유지trim은 앞뒤만 제거. "Hello World" 중간 공백은 그대로
폼 처리 필수$_POST, $_GET 등 사용자 입력은 항상 trim() 후 사용하는 관례

1 왜 공백이 문제가 되는가 — 사용자 입력의 함정
눈에 안 보이는 공백이 비교 실패, DB 조회 오류를 만든다

사용자가 폼에 " admin "처럼 앞뒤에 공백을 붙여서 입력하면, trim 없이 그대로 비교하면 "admin" ≠ " admin " 이 되어 로그인 실패나 중복 가입이 생깁니다. 또한 DB에 저장하면 검색 시 공백 포함 여부로 조회가 안 될 수 있습니다.

// trim 없이 처리할 때의 문제 $input = " admin "; // 사용자가 앞뒤 공백 포함 입력 if ($input === "admin") { // false! 공백 때문에 불일치 echo "로그인 성공"; } // trim 적용 후 if (trim($input) === "admin") { // true! echo "로그인 성공"; }
※ 사용자 입력 처리의 첫 번째 단계는 항상 trim()입니다. $_POST['username'] = trim($_POST['username']); 패턴을 습관화하세요.

2 ltrim() / rtrim() — 한쪽만 제거하고 싶을 때
왼쪽만, 오른쪽만 선택적으로 제거

trim()은 양쪽 모두 제거하지만, 왼쪽이나 오른쪽 한쪽만 처리해야 할 때 ltrim(), rtrim()을 사용합니다. 예를 들어 번호 목록(숫자 앞에 공백)을 처리하거나 줄 끝의 공백만 제거할 때 유용합니다.

$s = " Hello "; ltrim($s); // "Hello " ← 앞만 제거, 뒤 공백 남음 rtrim($s); // " Hello" ← 뒤만 제거, 앞 공백 남음 trim($s); // "Hello" ← 양쪽 모두 제거
※ 파일에서 줄을 읽을 때 줄 끝에 \n, \r\n이 붙어 오는 경우가 많습니다. rtrim($line)으로 줄 끝 개행 문자를 제거하는 패턴이 자주 쓰입니다.

3 기본 제거 대상 문자 — 공백만 아니다
6가지 공백류 문자를 모두 제거함

trim()은 일반 스페이스만 제거하는 게 아닙니다. 탭, 줄바꿈, 캐리지리턴, 수직탭, null 문자 등 공백 역할을 하는 모든 문자를 제거합니다. 파일 읽기, 네트워크 응답 처리 시 특히 유용합니다.

문자 이스케이프 설명
스페이스 " " 일반 공백. 키보드 스페이스바
\t 수평 탭 문자. 코드 들여쓰기에 사용
줄바꿈 \n Unix/Linux 줄 바꿈 (LF)
캐리지리턴 \r Windows 줄 바꿈의 CR. \r\n 쌍으로 사용
수직탭 \v 수직 탭. 드물지만 일부 포맷에서 사용
Null \0 Null 문자. C 문자열 종료 문자

 

반응형

 

4 커스텀 문자 제거 — 두 번째 인수 활용
공백 외에 특정 문자를 앞뒤에서 제거

두 번째 인수로 제거할 문자 목록을 지정하면, 공백이 아닌 특정 문자를 앞뒤에서 제거할 수 있습니다. 예를 들어 CSV의 따옴표 제거, URL에서 슬래시 제거 등에 활용됩니다.

// 양쪽의 슬래시 제거 $path = "/users/admin/"; $clean = trim($path, "/"); echo $clean; // "users/admin" // 따옴표 제거 $quoted = '"Hello World"'; $clean = trim($quoted, '"'); echo $clean; // "Hello World" (따옴표 제거) // 여러 문자 동시 제거 (문자열로 나열) $dirty = "***중요***"; $clean = trim($dirty, "*"); echo $clean; // "중요"
⚠️ 두 번째 인수를 지정하면 기본 공백류 제거 동작이 대체됩니다. 커스텀 문자와 공백을 모두 제거하려면 trim($s, " \t\n\r\0\x0B/");처럼 직접 포함시켜야 합니다.

5 폼 입력 처리 표준 패턴
모든 $_POST, $_GET 값은 trim 후 사용하는 것이 관례

사용자로부터 받는 입력값은 거의 항상 trim()을 적용합니다. 폼 처리 코드의 맨 앞에서 일괄 처리하거나, array_map으로 배열 전체에 한 번에 적용할 수 있습니다.

// 개별 처리 $username = trim($_POST['username']); $email = trim($_POST['email']); $password = trim($_POST['password']); // 배열 전체에 한 번에 trim 적용 $post = array_map('trim', $_POST); // $post['username'], $post['email'] 모두 trim 적용됨
array_map('trim', $_POST)는 $_POST 배열의 모든 값에 trim을 적용하는 간결한 패턴입니다. 단, 중첩 배열은 처리하지 못하므로 중첩이 있으면 재귀 처리가 필요합니다.

6 자주 하는 실수
실수 증상 해결
사용자 입력에 trim 안 함 앞뒤 공백으로 비교 실패, 중복 가입, DB 검색 오류 모든 $_POST, $_GET 값에 trim() 적용
반환값을 안 받음 원본이 바뀐 줄 알고 $string 사용 — 공백이 그대로 남음 $clean = trim($string) 형태로 결과 저장
중간 공백도 제거된다고 오해 "Hello World"를 trim하면 "HelloWorld"가 될 것으로 기대 trim은 앞뒤만 — 중간은 str_replace(" ", "", $s) 사용
커스텀 문자 지정 시 기본 공백 제거 사라짐 trim($s, "/")하면 공백이 제거 안 됨 커스텀 문자에 공백도 포함: trim($s, "/ \t\n\r")
다국어 공백 처리 안 됨 전각 공백( , U+3000), NBSP(&nbsp;)는 trim으로 안 제거 mb_regex 또는 preg_replace('/^\s+|\s+$/u', '', $s) 사용

핵심 한 줄 요약

trim()앞뒤 공백 및 공백류 문자(\t \n \r \v \0) 제거
ltrim / rtrim한쪽만 제거 — ltrim=왼쪽, rtrim=오른쪽
커스텀 문자두 번째 인수로 제거할 문자 지정 — 기본 공백 제거 동작이 대체됨
중간 공백trim은 앞뒤만 — 중간 공백은 str_replace() 로 처리
폼 처리 패턴array_map('trim', $_POST) 로 배열 전체에 일괄 적용

Tags

#PHP #trim #공백제거 #양끝공백 #ltrim #rtrim #폼입력처리 #PHP문자열함수 #PHP함수 #PHP학습 #웹개발 #티스토리
▼ 티스토리 태그 입력란 복사용
PHP, trim, 공백제거, 양끝공백, ltrim, rtrim, 폼입력처리, PHP문자열함수, PHP함수, PHP학습, 웹개발, 티스토리
반응형

댓글