2017-02-17 2 views
1

Ich öffne eine Datei auf dem Server mit PHP. Die Datei scheint gewöhnlich. Es öffnet sich in Notepad und Textedit auf einem PC. Sogar PHP kann es ohne Probleme in einem Webbrowser anzeigen, wenn wir es aussprechen.Öffnen einer codierten Datei mit PHP

Aber wenn ich versuche, es mit strpos() zu suchen, kann es nichts außer einzelnen Zeichen finden. Wenn ich nach einer Zeichenkette mit 2 oder mehr Zeichen suche, findet sie nichts.

Ich habe versucht, es zu UTF-8 zu kodieren, und es erkennt es als ASCII. also scheint alles genau da zu sein.

Ich habe auch den Teil der Datei isoliert, die ich versuche, nur 250 Zeichen zu lesen. Sie sehen alle gut auf dem Bildschirm aus.

Aber strpos kann es nicht finden. Ich habe Tests für jeden Teil meines Codes durchgeführt, und ich glaube, dass mit meinem Code alles in Ordnung ist. Das Problem, das ich glaube, rührt daher, dass die Charaktere, die ich auf dem Bildschirm sehe, nicht exakt mit dem übereinstimmen, was diese Charaktere wirklich sind.

Meine letzte Möglichkeit besteht darin, eine Funktion zu schreiben, die jedes Zeichen in ein Integer-Array umwandelt (wenn das überhaupt möglich ist) und dann alles wieder in eine Zeichenkette umwandelt. Auf diese Weise wissen wir zu 100%, dass die Charaktere, die wir sehen, real sind.

In der Hoffnung, dass jemand eine bessere Herangehensweise hat oder vielleicht eine Idee für etwas, das ich vermisst habe?

ich den Code unten schreiben werde:

$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 "; 
} 

Nur klar zu sein, die Datei-I Öffnung bin aus einem PC-Programm erzeugt, der seine Daten in .DAT-Format speichert. Wie ich schon sagte, ich kann den Inhalt sehr leicht sehen und lesen, mit jedem Programm, einschließlich PHP. aber wenn ich versuche zu suchen, ist es, als ob es den Inhalt überhaupt nicht erkennt.

Ich weiß nicht, wie man eine Datei auf StackOverflow hochlädt, aber wenn mir jemand sagen kann, wie es geht, werde ich die Datei gerne selbst veröffentlichen.

+0

Verwenden Sie einfach einen "Hexeditor", um diese Datei zu untersuchen, überprüfen Sie, welche Zeichen tatsächlich dort verwendet werden. – arkascha

+0

Bitte fügen Sie _not_ keine Details in Kommentare hinzu. Es gibt einen 'edit' Link für die Frage unterhalb. _Benutze es_. – arkascha

+0

Können Sie diese Datei bereitstellen? –

Antwort

0

Vielen Dank für Ihre Hilfe ARKASCHA. Ich konnte einen Online-HexEditor finden und als ich die Charaktere sah, scheint es, dass zwischen jedem einzelnen Zeichen in dieser Datei ein NUL-Zeichen steht. Das ist wahrscheinlich der Grund, warum ich es nicht mit einer normalen Ansicht sehen konnte. Ich musste nur eine zusätzliche Funktion ausführen, um NUL-Zeichen aus der Datei zu entfernen, und dann funktioniert es wie angenommen. Danke noch einmal.