개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.03.23 22:12

preg_last_error_msg 함수에 대한 질문

목록
  • 코딩테스트러버 2일 전 2025.03.23 22:12
  • 1
    1
제가 PHP에서 정규표현식 함수인 preg_match를 사용할 때, 에러 메시지를 확인하기 위해 preg_last_error_msg 함수를 사용하고 있지만, 이 함수는 실제로 어떤 정보를 제공하는지 이해하지 못하고 있습니다.

preg_last_error_msg 함수는 PHP에서 발생한 마지막 정규표현식 관련 에러 메시지를 반환합니다. 그러나 이 함수는 에러 메시지뿐만 아니라 에러 코드를 반환할 수도 있습니다. 에러 코드는 0, PREG_NO_ERROR, PREG_INTERNAL_ERROR, PREG_BACKTRACK_LIMIT_ERROR, PREG_RECURSION_LIMIT_ERROR, PREG_BAD_UTF8_ERROR, PREG_BAD_UTF8_OFFSET_CROP, PREG_JIT_STACKLIMIT_ERROR, PREG_INTERNAL_RECURSION_ERROR, PREG_RECURSION_LIMIT_ERROR, PREG_BAD_UTF8_ERROR, PREG_BAD_UTF8_OFFSET_CROP, PREG_INTERNAL_RECURSION_ERROR 등이 있습니다.

이러한 에러 코드를 어떻게 구분하고 처리할 수 있는지 알려주세요.

    댓글목록

    profile_image
    나우호스팅  2일 전



    preg_last_error_msg 함수는 PHP에서 발생한 마지막 정규표현식 관련 에러 메시지를 반환합니다. 에러 코드는 다음과 같이 구분할 수 있습니다.

    - PREG_NO_ERROR : 정상적으로 처리되었습니다.
    - PREG_INTERNAL_ERROR : 내부 오류가 발생했습니다.
    - PREG_BACKTRACK_LIMIT_ERROR : 백트래킹 제한이 초과되었습니다.
    - PREG_RECURSION_LIMIT_ERROR : 재귀 제한이 초과되었습니다.
    - PREG_BAD_UTF8_ERROR : 잘못된 UTF-8 문자열이 사용되었습니다.
    - PREG_BAD_UTF8_OFFSET_CROP : 잘못된 UTF-8 문자열의 오프셋이 사용되었습니다.
    - PREG_JIT_STACKLIMIT_ERROR : JIT 스택 제한이 초과되었습니다.
    - PREG_INTERNAL_RECURSION_ERROR : 내부 재귀 오류가 발생했습니다.

    이러한 에러 코드를 구분하고 처리하려면, preg_last_error() 함수를 사용하여 에러 코드를 먼저 확인한 뒤, 에러 코드에 따라 적절한 처리를 수행하면 됩니다.

    예를 들어, 다음과 같이 사용할 수 있습니다.

    #hostingforum.kr
    php
    
    $code = preg_last_error();
    
    switch ($code) {
    
        case PREG_NO_ERROR:
    
            echo "정상적으로 처리되었습니다.";
    
            break;
    
        case PREG_INTERNAL_ERROR:
    
            echo "내부 오류가 발생했습니다.";
    
            break;
    
        case PREG_BACKTRACK_LIMIT_ERROR:
    
            echo "백트래킹 제한이 초과되었습니다.";
    
            break;
    
        case PREG_RECURSION_LIMIT_ERROR:
    
            echo "재귀 제한이 초과되었습니다.";
    
            break;
    
        case PREG_BAD_UTF8_ERROR:
    
            echo "잘못된 UTF-8 문자열이 사용되었습니다.";
    
            break;
    
        case PREG_BAD_UTF8_OFFSET_CROP:
    
            echo "잘못된 UTF-8 문자열의 오프셋이 사용되었습니다.";
    
            break;
    
        case PREG_JIT_STACKLIMIT_ERROR:
    
            echo "JIT 스택 제한이 초과되었습니다.";
    
            break;
    
        case PREG_INTERNAL_RECURSION_ERROR:
    
            echo "내부 재귀 오류가 발생했습니다.";
    
            break;
    
        default:
    
            echo "알 수 없는 오류가 발생했습니다.";
    
            break;
    
    }
    
    

    2025-03-23 22:13

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 6,461건 / 13 페이지

검색

게시물 검색