Maison > développement back-end > tutoriel php > Comment formater des octets en unités lisibles par l'homme avec précision ?

Comment formater des octets en unités lisibles par l'homme avec précision ?

Barbara Streisand
Libérer: 2024-11-19 02:30:03
original
766 Les gens l'ont consulté

How to Format Bytes into Human-Readable Units with Precision?

Formatage des octets avec précision

Dans divers scénarios, il devient nécessaire de formater les valeurs des octets en unités lisibles par l'homme telles que les kilo-octets, les mégaoctets, et des gigaoctets. Par exemple, l'affichage de la taille des fichiers sur des pages Web nécessite le formatage des octets dans l'unité appropriée.

Solution : utiliser une fonction de formatage

Une solution efficace consiste à utiliser une fonction de formatage qui prend des octets en entrée et renvoie la chaîne formatée. Voici un exemple de fonction PHP qui permet d'obtenir cela :

function formatBytes($bytes, $precision = 2) {
    $units = array('B', 'KB', 'MB', 'GB', 'TB');

    $bytes = max($bytes, 0);
    $pow = floor(($bytes ? log($bytes) : 0) / log(1024));
    $pow = min($pow, count($units) - 1);

    // Uncomment one of the following alternatives
    // $bytes /= pow(1024, $pow);
    // $bytes /= (1 << (10 * $pow));

    return round($bytes, $precision) . $units[$pow];
}
Copier après la connexion

Explication

Cette fonction prend deux paramètres :

  • $bytes : Le taille du fichier en octets
  • $precision : Le nombre de décimales à display

La fonction utilise un tableau $units pour représenter les unités (octets, kilo-octets, mégaoctets, gigaoctets et téraoctets). Elle calcule la puissance $pow représentant l'unité appropriée en divisant le logarithme de $bytes par le logarithme de 1024. La puissance maximale est plafonnée à l'unité la plus élevée du tableau.

La fonction divise ensuite la valeur de l'octet par la puissance appropriée pour le convertir à l’unité souhaitée. Enfin, il arrondit la valeur à la précision spécifiée et ajoute l'unité correspondante du tableau $units.

Par exemple, si $bytes vaut 5 222 937, la fonction le formatera comme « 5,01 Mo ».

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal