Mesurer la taille de la chaîne en Octets en php
Je suis en train de faire de l'immobilier, de l'alimentation pour un portail et c'est de me dire la longueur maximale d'une chaîne de caractères doit être de 20 000 octets (20 ko), mais je n'ai jamais couru à travers ce avant.
Comment puis-je mesurer byte
taille d'un varchar string
. Donc, je peux alors faire une boucle while de la réduire.
- il ne devrait pas y avoir de problème pour faire une chaîne pour que la longueur est là qu'est-ce que ça vous dit ? quelles erreurs avez-vous déjà vu ????
Vous devez vous connecter pour publier un commentaire.
Vous devez déterminer si la chaîne de caractères ascii codés ou encodé avec un multi-octets format.
Dans le premier cas, vous pouvez simplement utiliser
strlen
.Dans le dernier cas, vous devez trouver le nombre d'octets par caractère.
la strlen documentation donne un exemple de comment le faire : http://www.php.net/manual/en/function.strlen.php#72274
str*()
enmb_str*()
, afin de l'appelantstrlen
sera en effet appelmb_strlen
. Pour voir si cette option est activée, vérifiezmbstring.func_overload
en php.ini. Voir aussi php.net/manual/en/mbstring.overload.phpstrlen()
n'est pas sûre, car il est peut-être surchargé sur PHP installations.Vous pouvez utiliser mb_strlen() pour obtenir le de la longueur en octets à l'aide d'un codage qui n'ont que des octets de caractères, sans worring sur multibyte ou de chaînes de caractères codés sur un seul.
Par exemple, comme drake127 saids dans un commentaire de mb_strlen, vous pouvez utiliser l'option "8bit" encodage:
Vous pouvez avoir des problèmes à l'aide de strlen fonction depuis php ont une option de surcharge strlen à fait appel mb_strlen. Voir plus d'informations à ce sujet dans http://php.net/manual/en/mbstring.overload.php
Pour couper la chaîne à la longueur en octets sans fente au milieu d'un caractère multi-octets, vous pouvez utiliser:
Voulez-vous dire la taille en octets ou de la longueur de la chaîne?
Octets la taille est mesurée avec
strlen()
, tandis que la longueur de la chaîne est interrogé à l'aide demb_strlen()
. Vous pouvez utilisersubstr()
de découper une chaîne de X octets (notez que cela permettra de briser la chaîne si elle a un encodage multi-octet - comme l'a souligné Darhazer dans les commentaires) etmb_substr()
pour la tailler à X caractères dans l'encodage de la chaîne.mb_strlen()
etstrlen()
, c'est à dire qu'ils ne sont pas les alias les uns des autres. J'ai par ailleurs fait assez réseau de la programmation en PHP pour savoir qu'il ne donne la longueur en octets.strlen()
: "strlen() retourne le nombre d'octets plutôt que le nombre de caractères dans une chaîne." Pas sûr si c'était là avant, mais il confirme que cette réponse est correcte.PHP
strlen()
fonction renvoie le nombre de caractères ASCII.strlen('borsc')
-> 5 (octets)strlen('boršč')
-> 7 (octets).. ou vous pouvez utiliser une fonction comme ceci:
Plus de PhoneixS réponse pour obtenir la bonne longueur de chaîne en octets Depuis
mb_strlen()
est plus lent questrlen()
, pour obtenir de meilleures performances que l'on peut "mbstring.func_overload" paramètre ini de sorte quemb_strlen()
est utilisé uniquement lorsque cela est vraiment nécessaire: