2010-04-12 3 views

Répondre

10

Vous pouvez lire le fichier dans une chaîne comme ceci:

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

Vous pouvez obtenir les octets individuels semblables à la façon dont vous le feriez dans C:

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

Références:

+1

Je pense qu'il ya un faute de frappe. Il doit être: '$ char = $ données [$ i];' –

4

Voir les PHP Manual on String access and modification by character

caractères dans est accessible s chaîne et modifiée par spécifiant le décalage à base zéro du caractère souhaité après la chaîne à l'aide de crochets de tableau carrés, comme dans $str[42]. Pensez à une chaîne comme un tableau de caractères à cette fin. Les fonctions substr() et substr_replace() peuvent être utilisées lorsque vous souhaitez extraire ou remplacer plus d'un caractère.

Ou, si vous êtes après la recherche et la lecture des octets du fichier, vous pouvez utiliser un SplFileObject

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

Ce n'est pas un tableau d'octets bien, mais itérer sur une poignée de fichier. SplFileInfo implémente l'interface SeekableIterator.

Et sidenote, il y a aussi

  • file - Retourne le fichier dans un tableau. Chaque élément du tableau correspond à une ligne dans le fichier, avec le retour à la ligne toujours attaché. En cas d'échec, file() retourne FALSE.
2

trop php>

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

meilleure façon de faire pour (non recommandé dans pour le nombre d'utilisation, sizeof, strlen ou d'autres fonctions): $counter = strlen($data); for($i = 0; $i < $counter; ++$i) { $char = data[$i]; echo "Byte $i: $char\n"; }

+0

micro-optimisation inutile. et votre réponse aurait dû être un commentaire en dessous de la réponse. – Gordon

+0

De toutes les micro-optimisations, celle-ci est la moins inutile du tout. – raveren

+0

oui. mais en zend sertificate très fréquent. – Mantas