PHP 바이트 단위 변환 및 문자열 길이 계산 함수 구현 방법
페이지 정보

본문
그누보드 운영 시 파일 용량을 보기 쉽게 바꾸고 문자셋별 길이를 정확히 계산하는 함수를 적용하는 방법을 알아봅니다.
PHP 바이트 단위 변환 함수 구현 방법
파일 크기나 용량을 사람이 읽기 쉬운 단위(KB, MB, GB 등)로 자동 변환하려면 byteFormat 함수나 formatSize 함수를 사용자 정의 함수로 구현하여 사용할 수 있습니다.
코드 적용 전 백업 및 주의사항
기존 운영 중인 소스코드나 파일 처리 로직에 함수를 적용하기 전에는 반드시 대상 파일을 백업해야 합니다. 예기치 않은 오류나 파싱 문제가 발생할 경우 즉시 원본 상태로 복구할 수 있도록 준비해야 합니다.
1. byteFormat 함수
log 함수와 pow 함수를 조합하여 단위를 자동으로 판별하거나 지정된 단위로 변환합니다.
if (!function_exists('byteFormat')) {
function byteFormat($bytes, $unit = "", $decimals = 2) {
$units = array('B' => 0, 'KB' => 1, 'MB' => 2, 'GB' => 3, 'TB' => 4, 'PB' => 5, 'EB' => 6, 'ZB' => 7, 'YB' => 8);
$value = 0;
if ($bytes > 0) {
if (!array_key_exists($unit, $units)) {
$pow = floor(log($bytes)/log(1024));
$unit = array_search($pow, $units);
}
$value = ($bytes/pow(1024,floor($units[$unit])));
}
if (!is_numeric($decimals) || $decimals < 0) {
$decimals = 2;
}
return sprintf('%.' . $decimals . 'f '.$unit, $value);
}
}
2. formatSize 함수
문자열 길이와 거듭제곱 연산을 이용해 간단하게 용량을 포맷팅합니다.
function formatSize($bytes, $decimals = 2) {
$size = array('B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB');
$factor = floor((strlen($bytes) - 1) / 3);
return sprintf("%.{$decimals}f", $bytes / pow(1024, $factor)) ." ". @$size[$factor];
}
버전 호환성 참고 사항
원문 자료에 특정 PHP 버전 언급이 없으므로, 최신 버전 환경에서의 호환성은 직접 테스트가 필요합니다.
문자셋별 문자열 길이 계산 함수 구현 방법
문자열의 캐릭터셋(EUC-KR, UTF-8)에 따라 글자당 차지하는 바이트가 다르므로 이에 맞춰 올바르게 길이를 계산하기 위해 사용자 정의 str_count 함수를 구현하여 사용할 수 있습니다.
문자열 길이 계산 권장 방법
PHP에서 문자열 길이를 계산할 때는 직접 구현한 함수보다 내장 함수인 mb_strlen()을 사용하는 것이 가장 정확하고 안전합니다. 특히 UTF-8과 같은 멀티바이트 인코딩 환경에서는 strlen()이나 직접 구현한 로직이 글자 수를 잘못 계산할 수 있습니다.
// 권장: mb_strlen 사용
$length = mb_strlen($str, 'UTF-8');
mb_strlen() 함수를 사용하려면 서버 환경에서 mbstring 확장이 설치 및 활성화되어 있어야 합니다.
코드 적용 전 주의사항
- 기존 운영 중인 소스코드나 파일 처리 로직에 함수를 적용하기 전에는 반드시 대상 파일을 백업해야 합니다. 예기치 않은 오류나 파싱 문제가 발생할 경우 즉시 원본 상태로 복구할 수 있도록 준비해야 합니다.
- 원문 자료에 특정 PHP 버전 언급이 없어 최신 버전 환경에서의 호환성은 직접 테스트가 필요합니다.
함께 보면 좋은 글
참고자료
기타 참고자료
- 이전글PHP 및 데이터베이스 환경에서 DATEFORMAT과 stripslashes 함수 활용 방법 26.09.14
- 다음글PHP 문자열 숫자 추출 및 정규식 유효성 검사 방법 26.09.14
댓글목록
등록된 댓글이 없습니다.