PHP의 preg_replace 함수를 활용하면 문자열 안에서 원하지 않는 구두점(특수문자)을 간편하게 찾아 제거할 수 있습니다. 정규 표현식 패턴을 어떻게 작성하느냐에 따라 영문자와 숫자만 남기거나, 영문자만 남기는 등 원하는 형태로 문자열을 자유롭게 정리할 수 있습니다.
영문자와 숫자만 유지하기
아래 예제는 알파벳과 숫자를 제외한 모든 문자를 공백으로 대체합니다. 패턴 끝에 붙은 i 플래그는 대소문자를 구분하지 않도록 만들어 줍니다.
<?php
$s = "Hello, my name is Bobby !? I am 8 years !";
print_r(preg_replace('/[^a-z0-9]+/i', ' ', $s));
?>출력 결과
실행하면 다음과 같은 결과가 출력됩니다.
Hello my name is Bobby I am 8 years
영문자만 유지하기
숫자까지 함께 제거하고 알파벳만 남기고 싶다면, 아래와 같이 패턴에서 숫자 범위를 제외하면 됩니다.
<?php
$s = "Hello, my name is Bobby !? I am 8 years !";
print_r(preg_replace('/[^a-z]+/i', ' ', $s));
?>출력 결과
실행하면 다음과 같은 결과가 출력됩니다.
Hello my name is Bobby I am years
영문자, 숫자, 밑줄(_) 유지하기
정규 표현식에서 \w는 알파벳, 숫자, 밑줄(_)을 모두 포함하는 메타 문자입니다. 이를 활용하면 세 가지 요소를 한 번에 유지할 수 있습니다.
<?php
$s = "Hello, my name is Bobby !? I am 8 years !";
print_r(preg_replace('/[^\w]+/', ' ', $s));
?>출력 결과
실행하면 다음과 같은 결과가 출력됩니다.
Hello my name is Bobby I am 8 years