티스토리 뷰

반응형

안녕하세요! 오늘은 PHP에서 정규식을 사용하여 특정 형식의 데이터를 가공하는 방법을 살펴보겠습니다. 초보자 분들도 쉽게 따라 하실 수 있도록 차근차근 설명드릴게요. 😊

오늘 다룰 주제: 데이터의 형식 변환

우리가 처리하려는 데이터는 다음과 같은 형태를 가지고 있습니다:

  • 입력 데이터: 500KG220V(유선)
  • 원하는 출력 결과: 500KG * 220V * 방화용 (유선)

여기에서 500KG, 220V, 그리고 괄호 안의 유선을 추출한 뒤, 특정 형식으로 변환하는 작업을 진행할 거예요. 이를 통해 PHP에서 정규식을 활용하는 기본적인 방법을 배우게 됩니다.


1. 정규식이란 무엇인가요?

**정규식(Regular Expression)**은 문자열에서 특정 패턴을 찾거나 조작하기 위한 강력한 도구입니다. 정규식을 사용하면 단순한 검색뿐만 아니라 복잡한 데이터 형식을 가공하는 데도 매우 유용해요.

예를 들어:

  • 숫자를 찾아야 할 때
  • 특정 구분자로 나뉜 텍스트를 추출할 때
  • 텍스트에서 불필요한 부분을 제거할 때

정규식은 이런 작업을 간단하고 빠르게 처리할 수 있게 도와줍니다.


2. 우리가 사용할 정규식

오늘 사용할 정규식은 다음과 같습니다:

$pattern = '/(\d+)KG(\d{3})V\(([^)]+)\)/';

이 패턴의 의미

  1. (\d+)KG: 숫자(\d+)와 KG를 추출합니다.
    • 예: 500KG에서 500을 추출.
  2. (\d{3})V: 세 자리 숫자(\d{3})와 V를 추출합니다.
    • 예: 220V에서 220을 추출.
  3. \(([^)]+)\): 괄호 안에 들어 있는 문자를 추출합니다.
    • 예: (유선)에서 유선을 추출.

이 패턴을 사용하면 입력 데이터에서 원하는 정보만 깔끔하게 추출할 수 있습니다.


3. PHP 코드로 정규식 활용하기

이제 PHP 코드로 정규식을 활용하여 데이터를 가공하는 방법을 살펴보겠습니다. 아래는 최종적으로 사용된 코드입니다.

// 입력 데이터
$spec = "500KG220V(유선)";

// 정규식 패턴
$pattern = '/(\d+)KG(\d{3})V\(([^)]+)\)/';

// 정규식 실행
if (preg_match($pattern, $spec, $matches)) {
    // 추출된 데이터 할당
    $kg = $matches[1] . 'KG';    // '500KG'
    $voltage = $matches[2] . 'V'; // '220V'
    $wire = $matches[3];          // '유선'

    // 새로운 형식으로 변환
    $spec = "$kg * $voltage * 방화용 ($wire)";
} else {
    // 정규식이 일치하지 않을 경우
    echo "데이터 형식이 올바르지 않습니다.";
}

4. 코드 설명

1) 정규식 매칭

preg_match는 PHP에서 정규식을 실행하는 함수입니다. 데이터가 정규식과 일치하면 true를 반환하고, $matches라는 배열에 매칭된 결과를 저장합니다.

  • $matches[1]: 500 (KG 앞의 숫자)
  • $matches[2]: 220 (V 앞의 숫자)
  • $matches[3]: 유선 (괄호 안의 텍스트)

2) 데이터 변환

추출된 데이터를 $kg, $voltage, $wire로 각각 저장한 뒤, 원하는 형식("$kg * $voltage * 방화용 ($wire)")으로 변환합니다.

3) 오류 처리

데이터가 정규식 패턴과 맞지 않을 경우 "데이터 형식이 올바르지 않습니다."라는 메시지를 출력하여 사용자가 문제를 확인할 수 있도록 합니다.


5. 입력과 출력 결과

입력

$spec = "500KG220V(유선)";

출력

500KG * 220V * 방화용 (유선)

6. 정규식을 함수로 재사용하기

위 코드를 함수로 만들어 필요할 때마다 사용할 수 있도록 만들어 보겠습니다.

function transformSpec($spec) {
    $pattern = '/(\d+)KG(\d{3})V\(([^)]+)\)/';
    if (preg_match($pattern, $spec, $matches)) {
        $kg = $matches[1] . 'KG';
        $voltage = $matches[2] . 'V';
        $wire = $matches[3];
        return "$kg * $voltage * 방화용 ($wire)";
    }
    return "데이터 형식이 올바르지 않습니다.";
}

// 사용 예시
echo transformSpec("500KG220V(유선)");

출력 결과

500KG * 220V * 방화용 (유선)

7. 마무리하며

정규식은 처음에는 조금 어려워 보일 수 있지만, 실제로 사용해 보면 데이터 처리에 큰 도움이 됩니다. 오늘은 간단한 데이터를 정규식으로 가공하는 예제를 다뤘지만, 이를 기반으로 더욱 복잡한 데이터를 처리할 수도 있습니다.

초보자 분들도 직접 실습해 보시고, 자신만의 데이터 가공 방법을 만들어 보세요! 궁금한 점이 있거나 더 알고 싶은 내용이 있다면 언제든 댓글로 남겨주세요. 😊

감사합니다! 🙏

반응형
댓글