BOARD

자료·레퍼런스

PHP 문자열 공백 제거 방법 (trim, pregreplace)

페이지 정보

profile_image
작성자 최고관리자
댓글 0건 조회 19회 작성일 26-09-30 18:08

본문

PHP 문자열 공백 제거 방법 (trim, preg_replace)

그누보드 운영 및 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 공백 엔티티인 &nbsp;는 제거되지 않으므로, 데이터에 포함되어 있다면 별도로 처리해야 합니다.

PHP 정규식 공백 제거 시 HTML 공백 엔티티(&nbsp;) 처리 안내

preg_replace 함수를 사용하여 문자열 내의 공백을 제거할 때, HTML 공백 특수문자인 &nbsp;는 일반 공백 문자로 인식되지 않아 정규식만으로는 제거되지 않습니다.

확인 및 대안

  • 제한 사항: preg_replace("/\s+/", "", $in) 등의 패턴은 일반 공백 및 제어 문자(\t, \n, \r 등)는 제거할 수 있으나 &nbsp;는 직접 지우지 못합니다.
  • 다음 행동: &nbsp;가 포함된 문자열을 정제하려면 preg_replace를 실행하기 전에 str_replace("&nbsp;", " ", $str) 함수를 사용하여 &nbsp;를 일반 공백이나 빈 문자열로 먼저 변환한 뒤 공백 제거 작업을 진행해야 합니다.

PHP 공백 제거 방법 선택 기준

내 상황우선할 판단다음 행동
회원가입 폼이나 게시물 입력값의 앞뒤 불필요한 공백을 없애야 할 때trim() 함수 적용trim($str) 또는 ltrim(), rtrim()을 사용하여 양 끝 또는 한쪽 끝의 제어 문자를 제거
문장이나 단어 사이에 포함된 모든 공백을 한 번에 없애야 할 때정규식을 활용한 preg_replace 적용preg_replace("/s+/", "", $str) 코드를 실행하여 중간 공백 제거
HTML 코드 내 &nbsp; 엔티티가 포함되어 정규식으로 지워지지 않을 때문자열 치환 선행 처리str_replace로 &nbsp;를 일반 공백이나 빈값으로 먼저 변환한 뒤 preg_replace 연동

실전 FAQ

Q. trim() 함수를 쓸 때 한글 문자열 처리에 주의해야 하는 이유는 무엇인가요?

  • trim() 함수는 매개변수로 지정된 문자를 지울 때 멀티바이트(Multi-byte) 문자셋을 완벽하게 지원하지 않으므로, 한글 조합 글자를 특정 문자 제거용으로 지정할 때는 의도치 않은 동작이 발생할 수 있습니다. 일반적인 앞뒤 공백 제거 목적으로는 문제없이 사용할 수 있습니다.

Q. preg_replace로 공백을 지웠는데도 빈 공간이 남는다면 어떤 부분을 확인해야 하나요?

  • 일반적인 스페이스 바 공백이나 탭(\t), 개행(\n)은 /\s+/ 패턴으로 제거되지만, 웹 스크랩이나 HTML 출력물에 흔히 섞여 들어오는 &nbsp;는 일반 공백 문자가 아니여서 정규식만으로는 사라지지 않습니다. 이 경우 str_replace를 이용해 &nbsp;를 먼저 치환해야 합니다.

참고자료

기타 참고자료

댓글목록

등록된 댓글이 없습니다.