Maison >développement back-end >PHP7 >Concernant le traitement des chaînes hexadécimales en PHP7
Cet article est écrit par la rubrique PHP7tutorial pour vous présenter les problèmes de "0xFFFFFFFF" et 0xFFFFFFFF en php7. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il sera utile à tout le monde.
Question spécifique :
$t1 = 0x3FFFFFFF & (1 * (0xd5b42e11)); $t2 = 0x3FFFFFFF & (1 * ("0xd5b42e11")); var_dump($t1,$t2);
La valeur du code ci-dessus en php7 (non inclus) et les plateformes suivantes est :
int(364129809) int(364129809)
Et la valeur en php7 est :
int(364129809) int(0)
Comment gérer 0x dans l'environnement php7 . Que diriez-vous de rendre $str identique à la valeur ci-dessus ?
Solution :
À partir de PHP7, les chaînes contenant des chiffres hexadécimaux ne sont plus considérées comme des nombres
Si vous devez détecter si une chaîne contient des chiffres hexadécimaux, le code officiellement recommandé est
<?php $str = "0xffff"; $int = filter_var($str, FILTER_VALIDATE_INT, FILTER_FLAG_ALLOW_HEX); if (false === $int) { throw new Exception("Invalid integer!"); } var_dump($int); // int(65535) ?>
pour La question ci-dessus doit être modifiée à
$t1 = 0x3FFFFFFF & (1 * (0xd5b42e11)); $t2 = 0x3FFFFFFF & (1 * (filter_var("0xd5b42e11", FILTER_VALIDATE_INT, FILTER_FLAG_ALLOW_HEX))); var_dump($t1,$t2);
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!