2010-04-12 24 views

Respuesta

10

Usted puede leer el archivo en una cadena como esta:

$data = file_get_contents("/tmp/some_file.txt"); 

se puede conseguir en los bytes individuales similar a como lo haría en C:

for($i = 0; $i < strlen($data); ++$i) { 
    $char = $data[$i]; 
    echo "Byte $i: $char\n"; 
} 

Referencias:

+1

Creo que hay una error de tipografía. Debe ser: '$ char = $ data [$ i];' –

4

Ver las PHP Manual on String access and modification by character

caracteres dentro de la cadena s puede ser accedido y modificado por especificando el desplazamiento basado en cero del carácter deseado después de la cadena usando corchetes cuadrados, como en $str[42]. Piense en una cadena como una matriz de caracteres para este propósito. Las funciones substr() y substr_replace() se pueden usar cuando desee extraer o reemplazar más de 1 carácter.

O, si usted está después de buscar y leer los bytes del archivo, puede utilizar un SplFileObject

$file = new SplFileObject('file.txt'); 
while (false !== ($char = $file->fgetc())) { 
    echo "$char\n"; 
} 

Eso no es una matriz de bytes sin embargo, pero la iteración en un identificador de archivo. SplFileInfo implementa la interfaz SeekableIterator.

Y en una nota al margen, también

  • file es - Devuelve el archivo en una matriz. Cada elemento de la matriz corresponde a una línea en el archivo, con la nueva línea todavía adjunta. En caso de error, file() devuelve FALSE.
2

demasiado php>

$data = file_get_contents("/tmp/some_file.txt");

mejor manera de hacer para (no recomendé en para el recuento de uso, sizeof, strlen u otras funciones): $counter = strlen($data); for($i = 0; $i < $counter; ++$i) { $char = data[$i]; echo "Byte $i: $char\n"; }

+0

micro-optimización sin sentido. y tu respuesta debería haber sido un comentario debajo de la respuesta también. – Gordon

+0

De todas las micro optimizaciones, esta es la menos inútil en todo caso. – raveren

+0

sí. pero en zend sertificate muy frecuente. – Mantas

Cuestiones relacionadas