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

PHP mb_check_encoding() 함수로 문자열이 지정된 인코딩에서 유효한지 확인하는 방법

PHP에서 mb_check_encoding() 함수는 주어진 문자열이 지정된 인코딩에 대해 유효한지 검사할 때 사용합니다. 이 함수는 특정 바이트 스트림이 지정된 인코딩 규격에 맞는지 확인하여, 잘못된 인코딩을 이용한 공격(인코딩 기반 보안 취약점)을 사전에 방지하는 데 유용합니다.

문법

bool mb_check_encoding(string $value = null, string $encoding = null)

참고: 이 함수는 명시된 바이트 스트림이 해당 인코딩에 유효한지 검사합니다. 만약 전달된 값이 배열이라면, 모든 키와 값을 재귀적으로 검증합니다. 이를 통해 잘못된 인코딩을 악용한 공격을 효과적으로 차단할 수 있습니다.

매개변수

mb_check_encoding() 함수는 두 개의 매개변수를 받습니다: $value$encoding.

  • $value − 유효성을 검사할 바이트 스트림 또는 배열입니다. 이 값을 생략하면 요청(request) 시작 시점부터의 모든 입력 데이터를 대상으로 검사합니다.

  • $encoding − 기대하는(검사 대상) 인코딩입니다. 생략 시 내부 인코딩이 사용됩니다.

반환 값

검사가 성공적으로 통과하면 true를 반환하고, 유효하지 않으면 false를 반환합니다.

예제

<?php
    // mb_check_encoding 함수를 사용하여
    // 문자열의 유효성 검사
    $bool = mb_check_encoding("Hello world", "ASCII");

    // true 반환
    var_dump($bool);
?>

출력 결과

bool(true)

위 예제에서 "Hello world" 문자열은 ASCII 인코딩에 유효하기 때문에 true가 반환됩니다. 반대로 한글이나 이모지처럼 ASCII 범위를 벗어나는 문자가 포함되어 있다면 false가 반환됩니다.

버전별 참고 사항

mb_check_encoding() 함수는 이전 버전에서는 nullable 값을 허용하지 않았지만, PHP 8.0부터는 null 값을 사용할 수 있습니다. 또한 PHP 7.2부터는 값으로 배열을 전달할 수 있게 되었으며, 그 이전 버전에서는 문자열만 지원했습니다.