PHP에서는 preg_replace() 함수를 사용하여 문자열에서 영숫자(알파벳과 숫자)가 아닌 특수 문자를 손쉽게 제거할 수 있습니다. preg_replace() 함수는 PHP에 내장된 정규 표현식 함수로, 정규식 패턴을 기반으로 문자열을 검색하고 원하는 내용으로 치환하는 데 사용됩니다.
preg_replace() 함수 문법
preg_replace(pattern, replacement, subject, limit, count)
각 매개변수의 의미를 자세히 살펴보겠습니다.
pattern
검색에 사용할 정규 표현식 패턴을 지정합니다. 영숫자가 아닌 문자를 찾으려면 /[^a-zA-Z0-9]/와 같은 패턴을 사용합니다.
replacement
필수 매개변수로, 패턴에 일치하는 부분을 대체할 문자열 또는 문자열 배열을 지정합니다. 문자를 제거하려면 빈 문자열 ''을 사용합니다.
subject
검색 및 치환 작업의 대상이 되는 문자열 또는 문자열 배열입니다.
limit
각 subject 문자열에서 각 패턴별로 수행할 수 있는 최대 치환 횟수를 지정합니다. 기본값은 -1(제한 없음)입니다.
count
선택적 매개변수입니다. 지정하면 실제 수행된 치환 횟수가 이 변수에 저장됩니다.
예제 코드
다음 예제는 preg_replace() 함수를 활용해 문자열에서 영숫자가 아닌 모든 문자를 제거하는 방법을 보여줍니다.
<?php
$str = "tu!tor^ials$%!poi&nt";
echo preg_replace('/[^a-zA-Z0-9]/', '', $str);
?>
실행 결과
tutorialspoint
코드 설명
위 예제에서 변수 $str에는 !, ^, $, %, & 등 다양한 특수 문자가 포함되어 있습니다. 정규 표현식 /[^a-zA-Z0-9]/는 알파벳 대소문자(a-z, A-Z)와 숫자(0-9)를 제외한 모든 문자, 즉 캐럿(^)이 부정(negation)을 의미하므로 영숫자가 아닌 문자에 일치합니다. 이렇게 일치된 문자들이 preg_replace() 함수에 의해 빈 문자열로 치환되면서 최종적으로 tutorialspoint라는 깔끔한 결과를 얻을 수 있습니다.
참고로 한글 등 멀티바이트 문자도 함께 유지해야 하는 경우에는 mb_ereg_replace() 함수나 유니코드를 지원하는 정규 표현식 패턴을 사용하는 것이 좋습니다.