Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP에서 배열의 모든 문자열 앞뒤 공백 제거하는 방법 (trim 완벽 가이드)

PHP로 개발하다 보면 사용자 입력이나 외부 데이터를 받아올 때 문자열 앞뒤에 불필요한 공백(whitespace)이 포함되는 경우가 많습니다. 이런 공백은 데이터 비교나 저장 시 문제를 일으킬 수 있기 때문에 반드시 정리해 주는 것이 좋습니다.

배열에 담긴 모든 문자열을 한 번에 자르려면(trim) array_map() 또는 array_walk() 함수와 trim을 함께 사용하면 됩니다. 아래에서 두 가지 방법을 예제와 함께 살펴보겠습니다.

방법 1. array_map()과 trim() 사용하기

array_map()은 콜백 함수를 배열의 각 요소에 적용한 결과를 새로운 배열로 반환합니다. 원본 배열을 유지하고 싶을 때 유용한 방식입니다.

예제 코드

<?php
   $arr = array(" John ", "Jacob ", " Tom ", " Tim ");

   echo "앞뒤 공백이 있는 배열...\n";
   foreach ($arr as $value) {
      echo "값 = $value \n";
   }

   // trim을 배열의 모든 요소에 적용
   $result = array_map('trim', $arr);

   echo "\n변경된 배열...\n";
   foreach ($result as $value) {
      echo "값 = $value \n";
   }
?>

실행 결과

앞뒤 공백이 있는 배열...
값 =  John 
값 = Jacob 
값 =  Tom 
값 =  Tim 

변경된 배열...
값 = John
값 = Jacob
값 = Tom
값 = Tim

방법 2. array_walk()로 원본 배열 직접 수정하기

array_walk()는 배열의 각 요소에 사용자 정의 함수를 적용하며, 참조(&)를 사용하면 원본 배열 자체를 직접 변경할 수 있습니다.

예제 코드

<?php
   $arr = array(" Kevin ", "Katie ", " Angelina ", " Jack ");

   echo "앞뒤 공백이 있는 배열...\n";
   foreach ($arr as $value) {
      echo "값 = $value \n";
   }

   // 각 요소를 참조로 전달하여 trim 적용
   array_walk($arr, function(&$val) {
      $val = trim($val);
   });

   echo "\n변경된 배열...\n";
   foreach ($arr as $key => $value) {
      print($arr[$key] . "\n");
   }
?>

실행 결과

앞뒤 공백이 있는 배열...
값 =  Kevin 
값 = Katie 
값 =  Angelina 
값 =  Jack 

변경된 배열...
Kevin
Katie
Angelina
Jack

두 방법의 차이점과 주의 사항

  • array_map(): 새 배열을 반환하므로 원본 배열이 그대로 유지됩니다. 코드가 간결하고 가장 널리 사용되는 방식입니다.
  • array_walk(): 참조를 통해 원본 배열을 직접 수정합니다. 별도의 결과 변수가 필요 없다는 장점이 있습니다.
  • create_function() 관련 주의: 예전 예제에서 흔히 보이던 create_function()은 PHP 7.2부터 지원 중단(deprecated)되었고, PHP 8.0에서 완전히 제거되었습니다. 따라서 위 예제처럼 익명 함수(closure)를 사용하는 것이 안전합니다.
  • trim()의 기능: 기본적으로 문자열 앞뒤의 공백, 탭, 줄바꿈 등을 제거하며, 두 번째 인자로 제거할 문자를 직접 지정할 수도 있습니다.

마무리

배열 전체의 문자열 공백을 제거할 때는 array_map('trim', $arr) 한 줄이면 충분합니다. 원본 배열을 직접 고쳐야 하는 상황이라면 array_walk()를 활용하세요. 두 방법 모두 실무에서 데이터 정규화(data normalization) 작업에 매우 자주 쓰이는 패턴이니 꼭 익혀두시기 바랍니다.