BOARD

자료·레퍼런스

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

페이지 정보

profile_image
작성자 최고관리자
댓글 0건 조회 8회 작성일 26-09-14 04:05

본문

개요

파일 크기나 용량을 다루다 보면 단순히 바이트(B) 단위의 숫자만으로는 직관적으로 파악하기 어렵습니다. log 함수와 pow 함수를 조합하거나 길이를 계산하여 지정된 단위로 자동 변환하는 사용자 정의 함수를 사용할 수 있습니다.

코드 변경 전 백업 및 주의사항

기존 운영 중인 소스코드나 파일 처리 로직에 함수를 적용하기 전에는 반드시 대상 파일을 백업해야 합니다. 예기치 않은 오류나 파싱 문제가 발생할 경우 즉시 원본 상태로 복구할 수 있도록 준비해야 합니다.

PHP 바이트 단위 포맷팅 함수

바이트 단위를 사람이 읽기 쉬운 단위로 변환하기 위해 byteFormat 함수와 formatSize 함수를 구현할 수 있습니다.

byteFormat 함수 구현

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); } }

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]; }

문자셋별 문자열 길이 계산 함수

문자열의 캐릭터셋(EUC-KR, UTF-8)에 따라 글자당 차지하는 바이트가 다르므로 이에 맞춰 올바르게 길이를 계산해야 합니다.

문자열 카운트 함수

function str_count($str){ $kChar = 0; for( $i = 0 ; $i < strlen($str) ;$i++){ $lastChar = ord($str[$i]); if($lastChar >= 127){ $i++; } $kChar++; } return $kChar; }

참고 사항 및 제약

  • 버전 호환성: 원문 자료에 특정 PHP 버전 언급이 없어 최신 버전 환경에서의 호환성은 직접 테스트가 필요합니다.

함께 보면 좋은 글

댓글목록

등록된 댓글이 없습니다.