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

PHP preg_match로 문자열에서 원치 않는 문자(특수 문자)만 추출하는 방법

문자열에서 영문자와 공백을 제외한 특수 문자, 즉 '원치 않는 문자'만 골라내어 출력하려면 preg_match_all() 함수를 사용하면 됩니다. 이 함수는 정규 표현식 패턴에 일치하는 모든 결과를 배열로 반환하기 때문에 이러한 작업에 매우 적합합니다.

예를 들어 다음과 같이 특수 문자가 섞여 있는 문자열이 있다고 가정해 보겠습니다.

$sentence = "M-y Name/i_s John+Doe";

이 문자열에서 알파벳과 공백을 제외한 특수 문자만 화면에 출력하고 싶다면, 기대하는 결과는 다음과 같습니다.

-/_+

예제 코드

위 작업을 수행하는 PHP 코드는 다음과 같습니다.

<!DOCTYPE html>
<html>
<body>
<?php
$sentence = "M-y Name/i_s John+Doe";
echo "원본 문자열 = ", $sentence, "<br>";
if(preg_match_all('/[^a-zA-Z ]/', $sentence, $output)) {
    echo "추출된 특수 문자 = " . implode('', $output[0]);
}
?>
</body>
</html>

코드 설명

핵심은 정규 표현식 패턴 /[^a-zA-Z ]/입니다. 대괄호 안의 ^는 부정(negation)을 의미하므로, 이 패턴은 '영문 대소문자(a-z, A-Z)와 공백을 제외한 모든 문자'에 일치합니다. preg_match_all()은 일치하는 모든 문자를 찾아 세 번째 인자로 전달된 $output 배열의 첫 번째 요소($output[0])에 저장하며, 마지막으로 implode() 함수를 사용해 이 값들을 하나의 문자열로 합쳐 출력합니다.

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

원본 문자열 = M-y Name/i_s John+Doe
추출된 특수 문자 = -/_+