PHP에서 문자열에 포함된 공백을 제거해야 하는 경우는 매우 흔합니다. 상황에 따라 단순히 띄어쓰기(스페이스)만 제거할 수도 있고, 탭이나 줄바꿈 문자까지 포함한 모든 공백 문자를 한 번에 없애야 할 수도 있습니다. 이 글에서는 세 가지 대표적인 방법을 예제 코드와 함께 자세히 살펴보겠습니다.
1. strtr() 함수를 사용하는 방법
strtr() 함수는 문자열 내의 특정 문자를 다른 문자로 변환할 때 사용됩니다. 이 함수를 활용하면 공백을 빈 문자열로 치환하여 제거할 수 있습니다. 단, strtr()은 원본 문자열을 직접 수정하지 않으므로 반환값을 반드시 변수에 다시 할당해야 합니다.
<?php
$str = "this is a test string";
$str = strtr($str, [' ' => '']);
echo $str;
?>
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
thisisateststring
2. str_replace() 함수로 공백만 제거하기
문자열에서 일반 공백(스페이스)만 깔끔하게 제거하려면 str_replace() 함수를 사용하는 것이 가장 간단하고 직관적인 방법입니다. 이 함수는 지정한 문자나 문자열을 찾아 다른 값으로 치환합니다.
<?php
$str = "this is a test string";
$str = str_replace(' ', '', $str);
echo $str;
?>
문자열 내의 모든 공백이 빈 문자열로 대체되어 다음과 같은 결과가 출력됩니다.
thisisateststring
3. preg_replace()로 탭·줄바꿈까지 모든 공백 제거하기
탭(\t)이나 줄바꿈(\n)처럼 눈에 보이지 않는 공백 문자까지 모두 제거하려면 정규 표현식을 지원하는 preg_replace() 함수를 사용해야 합니다.
<?php
$str = "this is a test string";
$str = preg_replace('/\s/', '', $str);
echo $str;
?>
여기서 /\s/ 패턴은 스페이스, 탭, 줄바꿈 등 모든 종류의 공백 문자와 일치합니다. preg_replace()는 문자열에서 해당 패턴과 일치하는 모든 부분을 찾아 지정한 값(이 경우 빈 문자열)으로 교체합니다.
실행 결과는 다음과 같습니다.
thisisateststring
마무리: 어떤 방법을 선택해야 할까?
세 가지 방법을 정리하면 다음과 같습니다.
- str_replace(' ', '', $str) — 일반 공백만 제거할 때 가장 간단하고 빠른 방법입니다.
- strtr($str, [' ' => '']) — 여러 문자를 한 번에 치환해야 할 때 유용합니다.
- preg_replace('/\s+/', '', $str) — 탭, 줄바꿈 등 모든 공백 문자를 제거할 때 사용합니다.
참고로 preg_replace() 사용 시 /\s+/처럼 수량자 +를 함께 쓰면 연속된 공백을 하나의 패턴으로 처리할 수 있어 더욱 효율적입니다. 요구 사항에 맞는 적절한 함수를 선택하여 깔끔한 문자열을 만들어 보세요.