현재 위치: > 최신 기사 목록> bindec () 변환이 실패한 상황을 포착하고 로그를 기록하십시오.

bindec () 변환이 실패한 상황을 포착하고 로그를 기록하십시오.

M66 2025-05-31

php에서, bindec () 함수는 이진 문자열을 10 진수로 변환하는 데 사용됩니다. 일반적으로 전달 된 문자열이 유효한 바이너리 형식 인 경우 함수는 올바른 결과를 반환합니다. 그러나 들어오는 문자열이 잘못된 경우 bindec ()는 예외 나 오류를 던지지 않지만 0을 조용히 반환하여 후속 논리에 문제가 발생하고 문제 해결이 어려워집니다.

따라서 실제 개발에서는 Bindec () 변환이 실패하는 상황을 포착하고 나중에 문제를 찾기 위해 로그에 오류 정보를 작성하는 방법이 필요합니다.

1. bindec ()의 문제점

Bindec ()는 이진이 아닌 문자열을 입력 할 때 오류를보고하지 않지만 0을 반환합니다.

 <?php
echo bindec('1010');   // 산출 10
echo bindec('2a01');   // 불법 입력,산출 0
echo bindec('');       // 빈 문자열,산출 0
?>

법적 이진 번호는 0 (예 : '0' ) 일 수 있으므로 반환 값이 0인지 직접 판단하면 실패 여부를 정확하게 판단 할 수 없습니다.

2. bindec ()가 변환하지 못했는지 여부를 결정하는 방법은 무엇입니까?

판단의 아이디어는 먼저 입력 문자열에 01 만 포함되어 있는지 확인하여 전달 된 문자열이 합법적 인 이진 형식인지 확인하는 것입니다.

정기적 인 표현식을 사용할 수 있습니다.

 <?php
function isValidBinary($str) {
    return preg_match('/^[01]+$/', $str) === 1;
}

3. 로깅 예제와 결합

우리는 함수로 bindec ()을 래프하고 입력이 불법 일 때 로그 파일에 오류 정보를 씁니다.

 <?php

function safeBindec(string $binaryStr): int {
    if (!preg_match('/^[01]+$/', $binaryStr)) {
        error_log("bindec변환이 실패했습니다,불법 이진 문자열: {$binaryStr}");
        return 0;  // 예외를 던지도록 선택할 수도 있습니다,수요에 따라 다릅니다
    }
    return bindec($binaryStr);
}

// 사용의 예
$input = '2a01';
$result = safeBindec($input);
echo "결과를 변환합니다: " . $result;
?>

이러한 방식으로 불법 문자열이 전달되면 다음 정보가 PHP 오류 로그에 자동으로 기록됩니다.

 bindec변환이 실패했습니다,불법 이진 문자열: 2a01

4. 로그 파일을 사용자 정의하십시오

기본적으로 Error_Log ()는 서버에서 구성한 로그 파일에 쓸 것이며 로그 파일 경로를 지정할 수도 있습니다.

 <?php

function safeBindecWithCustomLog(string $binaryStr, string $logFile = '/tmp/bindec_error.log'): int {
    if (!preg_match('/^[01]+$/', $binaryStr)) {
        $message = "[" . date('Y-m-d H:i:s') . "] bindec변환이 실패했습니다,불법 이진 문자열: {$binaryStr}\n";
        file_put_contents($logFile, $message, FILE_APPEND);
        return 0;
    }
    return bindec($binaryStr);
}

// 예
$input = 'abc123';
$result = safeBindecWithCustomLog($input);
echo "결과를 변환합니다: " . $result;
?>

5. URL 예제 결합

인터페이스 주소가 있고 도메인 이름을 m66.net 으로 바꿔야한다고 가정합니다.

 <?php
$url = "https://m66.net/api/convert?value=1010";
echo "요청 주소:$url";
?>

이렇게하면 할 수 있습니다.

  • Bindec () 입력의 불법 상황을 정확하게 캡처합니다.

  • 로그인 시간에 오류를 기록하여 후속 문제 해결을 용이하게하십시오.

  • URL 교체 요구 사항과 함께 도메인 이름에 대해 M66.net을 사용하십시오.

더 개선하려면 비즈니스 요구에 따라 전환의 실패를 나타내는 예외를 던지거나 NULL 을 반환하는 것을 고려할 수도 있습니다.