(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)
crc32 — Calcule la somme de contrôle CRC32
Génère la somme de contrôle cyclique CRC32, calculée sur 32 bits, et
appliquée à la chaîne string. Cette fonction est
généralement utilisée pour valider l'intégrité de données durant une
transmission.
En raison du fait que le type entier de PHP est signé, la plupart des sommes de contrôle crc32 se trouvent être des entiers négatifs sur les plateformes 32bits. Sur des installations 64bits, tous les résultats de la fonction crc32() seront des entiers positifs.
Aussi, il faut utiliser le formateur "%u" de la fonction sprintf() ou de la fonction printf() pour récupérer une représentation en chaîne de caractères de la somme de contrôle non-signée de la fonction crc32() au format décimal.
Pour une représentation hexadécimale de la somme de contrôle, il est possible de utiliser soit le formateur "%x" de la fonction sprintf() ou de la fonction printf() , ou bien les fonctions de conversion dechex(), les deux solutions prennent soin de convertir le résultat de la fonction crc32() en un entier non-signé.
Faire en sorte que les installations 64bits retournent aussi des entiers négatifs pour les valeurs de résultat élevées a été envisagé, mais cela casserait la conversion hexadécimale car les valeurs négatives auraient un décalage supplémentaire de 0xFFFFFFFF########. Étant donné que la représentation hexadécimale semble être le cas d'utilisation le plus courant, nous avons décidé de ne pas la casser même si cela casse directement la comparaison décimale dans environ 50% des cas lors d'un passage de 32 à 64bits.
Avec du recul, le fait que la fonction retourne un entier n'était peut-être pas la meilleure idée, et retourner dès le début une représentation hexadécimale sous la forme d'une chaîne de caractères (tel que le fait la fonction md5()), aurait été une meilleure solution.
Pour une solution plus pérenne, il est possible de se retourner vers la fonction
générique hash(). hash("crc32b", $str)
va retourner la même chaîne de caractères que str_pad(dechex(crc32($str)), 8, '0', STR_PAD_LEFT).
stringLes données.
Retourne la somme de contrôle crc32 de la chaîne
string, sous la forme d'un entier.
Exemple #1 Afficher une somme de contrôle CRC32
Cet exemple illustre comment afficher la somme de contrôle avec la fonction printf() :
<?php
$checksum = crc32("Le vif zéphyr jubile sur les kumquats du clown gracieux.");
printf("%u\n", $checksum);
?>