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

본문
개요
파일 크기나 용량을 다루다 보면 단순히 바이트(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 버전 언급이 없어 최신 버전 환경에서의 호환성은 직접 테스트가 필요합니다.
함께 보면 좋은 글
- 이전글PHP 및 데이터베이스 환경에서 DATE_FORMAT과 stripslashes 함수 활용 방법 26.09.14
- 다음글PHP 문자열 숫자 추출 및 정규식 유효성 검사 방법 26.09.14
댓글목록
등록된 댓글이 없습니다.