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

PHP에서 특정 값 기준으로 문자열을 분할하는 방법 – preg_match_all() 활용법

PHP에서 구분자 없이 붙어 있는 문자열을 특정 키워드 단위로 나누고 싶을 때가 있습니다. 이런 경우 preg_split()보다는 preg_match_all() 함수를 사용하는 것이 효과적입니다. preg_match_all()은 정규 표현식 패턴에 일치하는 모든 부분을 찾아 배열 형태로 반환해 주기 때문입니다.

문자열 준비하기

예를 들어 다음과 같은 문자열이 있다고 가정해 보겠습니다.

$values = 'javamysqlphpmongodbpythonspringhibernatephp';

이 문자열에서 java, hibernate, php라는 특정 값들을 기준으로 분할된 결과를 얻고 싶습니다.

java
hibernate
php

예제 코드

이를 구현한 PHP 코드는 다음과 같습니다.

<!DOCTYPE html>
<html>
<body>
<?php
$values = 'javamysqlphpmongodbpythonspringhibernatephp';
$afterSpliting = preg_match_all("/(java|hibernate|php)/", $values, $result);
print_r($result);
?>
</body>
</html>

코드 설명

  • /(java|hibernate|php)/ : 찾고자 하는 키워드들을 파이프(|)로 연결한 정규 표현식 패턴입니다.
  • $result : 매칭된 결과가 저장될 배열입니다.
  • preg_match_all()은 일치하는 항목의 개수를 반환하며, 전체 매칭 결과와 그룹별 결과를 모두 배열에 담아줍니다.

출력 결과

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

Array (
    [0] => Array ( [0] => java [1] => php [2] => hibernate [3] => php )
    [1] => Array ( [0] => java [1] => php [2] => hibernate [3] => php )
)

결과 해석

배열의 인덱스 [0]에는 정규 표현식 전체 패턴과 일치한 값들이 순서대로 저장되고, 인덱스 [1]에는 첫 번째 캡처 그룹(괄호 안의 패턴)에 해당하는 값들이 저장됩니다. 즉, 원본 문자열에서 java, php, hibernate, php가 차례대로 발견되었음을 확인할 수 있습니다.

이처럼 preg_match_all()을 활용하면 구분자가 없는 문자열이라도 원하는 키워드를 손쉽게 추출하여 분할된 것과 같은 효과를 얻을 수 있습니다.