Menu

PHP trim(): 문자열 앞뒤 공백 제거

trim($string)은 문자열 양 끝의 공백, 탭, 줄바꿈을 제거하고, ltrim()과 rtrim()은 한쪽만 정리합니다. 특정 문자 trim, 전각 공백, 배열의 모든 값 trim하기를 알아봅니다.

이 페이지에는 실행 가능한 에디터가 있습니다 - 편집하고 실행하면 결과를 바로 볼 수 있습니다.

trim($string)은 시작과 끝에서 공백 문자를 제거한 문자열을 반환합니다. 공백, 탭, 줄바꿈, 캐리지 리턴, NUL 바이트, 수직 탭입니다. ltrim()은 시작에서만, rtrim()은 끝에서만 제거합니다. 중간의 공백은 유지됩니다.

var_dump() 출력은 각 결과의 길이를 보여 주므로 제거된 문자를 확인할 수 있습니다. trim은 폼에서 온 대부분의 값에 가장 먼저 할 일입니다(비밀번호는 예외이며, 페이지 끝을 보세요). 끝에 공백을 붙여 ada@example.com 을 입력한 사용자도 로그인할 수 있어야 합니다.

문법

trim(string $string, string $characters = " \n\r\t\v\0"): string
ltrim(string $string, string $characters = " \n\r\t\v\0"): string
rtrim(string $string, string $characters = " \n\r\t\v\0"): string

trim()은 새 문자열을 반환하며, 넘긴 변수를 바꾸지 않습니다.

특정 문자 trim하기

두 번째 인수는 기본 목록을 대체합니다. 목록의 모든 문자가 순서와 횟수에 상관없이 양 끝에서 제거됩니다. ..는 범위를 정의하므로 'a..z'는 모든 소문자를 뜻합니다.

일반 공백 문자도 계속 제거하려면 목록에 포함하세요: trim($s, " \n\r\t\v\0/").

두 번째 인수는 문자열이 아니라 문자 집합

trim()은 단어나 접미사를 제거하지 않습니다. 목록에 있는 문자라면 무엇이든, 목록에 없는 문자를 만날 때까지 양 끝에서 제거합니다. 파일 확장자를 떼려는 사람들이 이 때문에 놀랍니다.

첫 번째 줄은 h가 집합에 있으므로 시작 부분의 h도 제거합니다. 고정된 접두사나 접미사를 제거하려면 str_starts_with()나 str_ends_with()를 substr()와 함께 쓰거나, 그 텍스트가 다른 곳에 나올 수 없다면 str_replace()를 쓰세요.

전각 공백 trim하기(일본어 입력)

일본어 키보드는 폼에 입력한 이름 주변 등에서 전각 공백  (U+3000)을 자주 만듭니다. 이는 trim의 기본 목록에 없고, 두 번째 인수에 넣는 것은 함정입니다. trim()은 바이트 단위로 동작하고, 이 공백은 3바이트 E3 80 80인데, E3은 모든 히라가나와 가타카나 문자의 첫 바이트이기도 해서 그런 문자로 시작하는 이름은 그 문자의 첫 바이트를 잃습니다. u 수식어를 붙인 정규 표현식을 쓰세요.

\A와 \z는 문자열의 시작과 끝에 고정합니다. u 수식어가 있으면 \s는 모든 유니코드 공백과 일치합니다. ASCII 공백 문자, 전각 공백, 웹 페이지에서 복사해 붙여 넣을 때 자주 따라오는 줄 바꿈 없는 공백(U+00A0)입니다. u가 없으면 \s는 ASCII 공백 문자만 일치하고 전각 공백은 남습니다. PHP 8.4에는 이를 위한 mb_trim(), mb_ltrim(), mb_rtrim()이 추가되었고, PHP 8.3 이하에서는 정규식이 방법입니다.

배열의 모든 값 trim하기

array_map('trim', $array)는 각 값을 trim하고 키를 유지합니다. 텍스트 필드에서 온 쉼표 구분 목록을 explode()로 나눈 경우가 대표적입니다.

검증 전에 폼 값 trim하기

먼저 trim한 다음 빈 문자열인지 확인하세요. 그러면 공백만 든 필드가 빈 값으로 거부됩니다. 이 블록을 실행하고, 폼에 앞뒤로 공백이 있는 이름을 입력한 뒤 Send를 누르세요. $_POST가 채워진 채로 같은 스크립트가 다시 실행됩니다.

비밀번호는 trim하지 마세요. 비밀번호 끝의 공백도 비밀번호의 일부입니다.

자주 묻는 질문

PHP에서 trim()은 무엇을 제거하나요?

기본적으로 문자열 양 끝에서 공백, 탭(\t), 줄바꿈(\n), 캐리지 리턴(\r), NUL 바이트(\0), 수직 탭(\v)을 제거합니다. 문자열 중간은 건드리지 않습니다.

trim, ltrim, rtrim의 차이는 무엇인가요?

trim()은 양 끝을, ltrim()은 시작만, rtrim()은 끝만 정리합니다. 셋 다 제거할 문자 목록을 선택적으로 같은 방식으로 받습니다.

trim()이 전각 공백을 제거하지 못하는 이유는 무엇인가요?

전각 공백(U+3000)은 trim의 기본 목록에 없고 UTF-8에서 3바이트입니다. preg_replace('/\A\s+|\s+\z/u', '', $s)를 쓰세요. u 수식어가 있으면 \s가 U+3000을 포함한 모든 유니코드 공백과 일치합니다. PHP 8.4에는 이것도 제거하는 mb_trim()이 추가되었습니다.

PHP에서 문자열의 마지막 쉼표를 제거하려면 어떻게 하나요?

rtrim($s, ',')는 끝의 쉼표를 모두 제거합니다. 뒤에 공백이 올 수 있다면 공백도 포함하세요: rtrim($s, ', ').

배열의 모든 값을 trim하려면 어떻게 하나요?

array_map('trim', $array)는 키를 유지하면서 모든 값을 trim한 새 배열을 반환합니다. 중첩 배열에는 참조와 함께 array_walk_recursive()를 쓰세요.

Coddy 프로그래밍 언어 일러스트

Coddy로 코딩 배우기

시작하기