2017-02-17 1 views
1

J'ouvre un fichier sur le serveur avec PHP. Le fichier semble ordinaire. Il ouvre dans Notepad et Textedit sur un PC. Même PHP peut l'afficher sans aucun problème dans un navigateur Web lorsque nous faisons écho. Mais quand j'essaie de le chercher avec strpos(), il ne trouve rien d'autre que des caractères uniques. Si je recherche une chaîne avec 2 caractères ou plus, elle ne trouve rien.Ouverture d'un fichier encodé avec PHP

J'ai essayé de l'encoder en UTF-8, et il le détecte comme ASCII. donc tout semble juste là.

J'ai également isolé la partie du fichier que j'essaye de lire à seulement 250 caractères. Ils ont tous l'air bien sur l'écran.

Mais strpos ne peut pas le trouver. J'ai effectué des tests sur chaque partie de mon code et je crois que tout va bien avec mon code. Le problème que je crois découle de ce que les caractères que je vois sur l'écran ne correspondent pas exactement à ce que ces caractères sont vraiment. Mon dernier recours consiste à écrire une fonction qui convertit chaque caractère en un tableau d'entiers (si c'est même possible), puis de convertir tout cela en une chaîne. De cette façon, nous saurons à 100% que les personnages que nous voyons sont réels.

Espérant que quelqu'un a une meilleure approche ou peut-être une idée de quelque chose que j'ai raté?

Je posterai le code ci-dessous:

$content = file_get_contents($file->getPathname()); // get the file contents 
$content = substr($content, 30, 300); // reduce the large file to just the first few lines 
$content = htmlspecialchars($content); // try to remove any special characters from the file 

$content = iconv('ASCII', 'UTF-8//IGNORE', $content); // encode to a friendly format 

$string = "JobName"; // this is the string i'm searching for 

if (strpos($content, $string) !== false) { 
echo "bingo"; 
} 

else { 
echo " not found "; 
} 

Pour être clair, le fichier que je suis ouverture est généré à partir d'un programme PC qui stocke ses données au format .DAT. Comme je l'ai dit, je peux voir et lire le contenu très facilement en utilisant n'importe quel programme, y compris PHP. mais quand j'essaie de chercher, c'est comme si elle ne reconnaissait pas le contenu du tout.

Je ne sais pas comment télécharger un fichier sur StackOverflow, mais si quelqu'un peut me dire comment le faire, je publierai volontiers le fichier lui-même.

+0

Il suffit d'utiliser un "hexeditor" pour examiner ce fichier, vérifiez quels caractères sont réellement utilisés. – arkascha

+0

Veuillez ne pas ajouter de détails dans les commentaires. Il y a un lien 'edit' pour le dessous de votre question. _Utilise le_. – arkascha

+0

Pouvez-vous fournir ce fichier? –

Répondre

0

Merci beaucoup pour votre aide ARKASCHA. J'ai été capable de trouver un HexEditor en ligne et quand j'ai vu les caractères, il semble qu'il y ait un caractère NUL entre chaque personnage de ce fichier. C'est probablement pourquoi je ne pouvais pas le voir avec une vue régulière. Je devais juste exécuter une fonction supplémentaire pour supprimer les caractères NUL du fichier, et ensuite cela fonctionne comme supposé. Merci encore.