strlen
devuelve el número de bytes en la cadena, no la longitud de caracteres. Ver el manual de PHP here.
Mire de cerca:
Nota:
strlen() devuelve el número de bytes en lugar del número de caracteres de una cadena.
Si toma el resultado y multiplica por 8, puede obtener bits.
Aquí hay una función que puede hacer los cálculos por usted.
function strbits($string){
return (strlen($string)*8);
}
Nota, si se utiliza, memory_get_usage()
, tendrá el valor incorrecto devuelto. El uso de la memoria es la cantidad de memoria asignada por el script PHP. Esto significa que, dentro de su analizador, está asignando memoria para la cadena y el valor de la cadena. Como resultado, el valor de esto antes y después de establecer una var sería mayor de lo esperado.
ejemplo, la cadena: Hello, this is just test message
, produce los siguientes valores:
Memory (non-real): 344 bytes
Strlen: 32 Bytes
Strlen * 8bits: 256 bits
Aquí está el código:
<?php
$mem1 = memory_get_usage();
$a = 'Hello, this is just test message';
echo "Memory (non-real): ". (memory_get_usage() - $mem1)."\n";
echo "Strlen: ". strlen($a)."\n";
echo "Strlen * 8bits: ". (strlen($a) * 8),"\n";
Mejor solución que la mía. –
Esto está un poco apagado. 'memory_get_usage() devuelve la cantidad de memoria, en bytes, que se está asignando actualmente a su script PHP. 'Su script asignó memoria para establecer la variable' $ foo' y la memoria para establecer la variable '$ foo' en una cadena y anexar un valor. El resultado es más alto que el conteo real de bit/byte de la cadena. –
entonces ¿por qué siempre devuelve 272 cuando uso '" Alguna variable "' como cadena o '" Alguna variable Alguna variable Alguna variable '' (muchas veces)? Incluso si asigno una cadena vacía, aún muestra 272. Parece que este método no es preciso – vladkras