Ho un file. ma ora è necessario leggere questo file in una matrice di byte. In java o C++ è molto facile farlo. ma non ho trovato come posso leggere in PHP.Lettura di un file in un array di byte (PHP)
risposta
È possibile leggere il file in una stringa come questa:
$data = file_get_contents("/tmp/some_file.txt");
si possono ottenere presso i singoli byte simile a come si farebbe in C:
for($i = 0; $i < strlen($data); ++$i) {
$char = $data[$i];
echo "Byte $i: $char\n";
}
Riferimenti:
È possibile leggere il file sia con fread()
o file_get_contents()
, poi divisi con str_split()
:
$MyArray = str_split($file);
Vedi le PHP Manual on String access and modification by character
caratteri all'interno della stringa s può essere letta e modificata da specificando l'offset a base zero del carattere desiderato dopo la stringa usando le parentesi quadre, come in
$str[42]
. Pensa a una stringa come a una matrice di caratteri per questo scopo. Le funzionisubstr()
esubstr_replace()
possono essere utilizzate quando si desidera estrarre o sostituire più di 1 carattere.
Oppure, se dopo aver chiesto e leggere byte dal file, è possibile utilizzare un SplFileObject
$file = new SplFileObject('file.txt');
while (false !== ($char = $file->fgetc())) {
echo "$char\n";
}
Questo non è un array di byte, però, ma l'iterazione di un handle di file. SplFileInfo implementa l'interfaccia SeekableIterator.
E su un sidenote, c'è anche
- file - Restituisce il file in un array. Ogni elemento dell'array corrisponde a una linea nel file, con il newline ancora collegato. In caso di fallimento, file() restituisce FALSE.
troppo php>
$data = file_get_contents("/tmp/some_file.txt");
modo migliore di fare per (non consigliato a conteggio uso, sizeof, strlen o altre funzioni): $counter = strlen($data); for($i = 0; $i < $counter; ++$i) { $char = data[$i]; echo "Byte $i: $char\n"; }
Penso che ci sia un errore di battitura. Deve essere: '$ char = $ data [$ i];' –