2010-03-04 6 views
0

fichier 1:Lire le texte brut à partir du fichier binaire avec PHP

asdffdsa 

Fichier 2:

asdfjklfdsaHGUik 

Comment puis-je lire ces fichiers binaires avec PHP tels que je peux remplir un tableau avec le texte en clair comme:

$file1_output = ["asdf", "fdsa"]; 
$file2_output = ["asdfjkl", "fdsaHGUik"]; 
+0

Donc, vous voulez seulement des mots de la lettre latine? – Gumbo

+1

Selon la taille des fichiers et la fréquence à laquelle vous l'exécutez, plutôt que de réinventer la roue, vous pouvez utiliser l'utilitaire 'strings' existant: http://en.wikipedia.org/wiki/Strings_ (Unix) –

Répondre

1

Cela correspond à tout caractère de mot (0-9, az, AZ et _):

preg_match_all(
    "/[\x30-\x39\x5F\x41-\x5A\x61-\x7a]+/", /* regexp */ 
    file_get_contents('file1'),    /* file contents */ 
    $file1_output       /* array to populate */ 
); 
0

Je ne sais pas si vous pouvez le faire une meilleure façon, mais peut-être lire char-en-char de fichier et de vérifier si elle s Le code ASCII (utilisant la fonction ord()) est dans la gamme qui vous intéresse - ferait aussi l'affaire?

0

Pour construire sur ce que dit @Frank Farmer, j'utiliser strings:

<?php 

$strings_command = '/usr/bin/strings'; 

$file1_output = array(); 
$file2_output = array(); 

exec("$strings_command $path_to_file1",$file1_output); 
exec("$strings_command $path_to_file2",$file2_output); 

?> 
+0

Merci pour les réponses. J'ai fini par passer juste 5 ou 6 heures et j'ai craqué le format du binaire. chaînes est un programme très utile que je n'avais pas connu, cependant. –

Questions connexes