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

PHP에서 문자열의 줄바꿈을 제거하고 공백 하나로 바꾸는 방법

PHP 프로그래밍을 하다 보면 여러 줄로 된 문자열의 줄바꿈을 제거하고 공백 하나로 합쳐야 하는 경우가 자주 있습니다. 이번 글에서는 trim()preg_replace() 함수를 활용해 이 문제를 간단하게 해결하는 방법을 알아보겠습니다.

문제 상황

다음과 같이 줄바꿈이 포함된 문자열이 있다고 가정해 보겠습니다.

$sentence = "
My name is John Smith
My Favorite subject is PHP.
";

이 문자열에서 줄바꿈을 모두 제거하고 공백 하나로 바꾸면 결과는 다음과 같아야 합니다.

My name is John Smith My Favorite subject is PHP.

해결 방법

preg_replace() 함수로 연속된 공백 문자(줄바꿈 포함)를 공백 하나로 치환한 뒤, trim()으로 문자열 앞뒤의 불필요한 공백을 제거하면 됩니다.

예제 코드

<!DOCTYPE html>
<html>
<body>
<?php
$sentence = "
My name is John Smith
My Favorite subject is PHP.
";
$sentence = trim(preg_replace('/\s\s+/', ' ', $sentence));
echo $sentence;
?>
</body>
</html>

실행 결과

위 코드를 실행하면 다음과 같은 출력이 나옵니다.

My name is John Smith My Favorite subject is PHP.

코드 설명

  • preg_replace('/\s\s+/', ' ', $sentence) : 정규 표현식 \s\s+는 공백 문자가 두 개 이상 연속으로 나타나는 부분을 의미합니다. 여기에는 줄바꿈(\n), 캐리지 리턴(\r), 탭(\t), 일반 공백 등이 모두 포함되며, 이를 공백 하나로 통일합니다.
  • trim() : 문자열 시작과 끝에 남아 있을 수 있는 공백이나 줄바꿈 문자를 제거합니다. 예제처럼 문자열 맨 앞이나 맨 끝에 줄바꿈이 있을 때 반드시 필요합니다.

참고 : str_replace를 사용하는 방법

정규식 없이 단순히 줄바꿈만 제거하고 싶다면 str_replace()를 사용할 수도 있습니다.

$sentence = trim(str_replace(["\r\n", "\n", "\r"], ' ', $sentence));

다만 이 방법은 연속된 공백이 여러 개일 경우 공백이 중복되어 남을 수 있습니다. 따라서 어떤 종류의 공백 문자든 깔끔하게 하나로 정리하려면 정규식 기반의 preg_replace() 방식을 사용하는 것이 더 안전하고 확실합니다.