Hallo zusammen,
Ich sehe das Problem nicht.
file_get_contents() packt die Datei in eine Variable, und strpos() sucht dann in dem String nach dem Vorkommen.
Keine der zwei Funktionen hat in ihrer Beschreibung vermerkt, dass Null- oder sonstige Bytes ein Problem darstellen würden.
Das Problem ist, das (fast) alle Zeichenketten nach jedem Zeichen von einem Nullzeichen gefolgt sind. Ich weiß das noch von früheren Experimenten in VB6. Wenn man von direkten API-Calls Strings zurück bekam mußten diese auch von diesen NULLEN bereinigt werden, bevor damit etwas anzufangen war.
$data = file_get_contents($file);
var_dump(strpos($data,'ZEICHENKETTE'));
// ergibt false, da nur Z.E.I.C.H.E.N.K.E.T.T.E in $data vorhanden ist,
// . = NULLZEICHEN
$data = str_replace(chr(0),'',$data);
var_dump(strpos($data,'ZEICHENKETTE'));
// ergibt z.B. int(743), wenn ZEICHENKETTE vorhanden ist
Mehr wollte ich gar nicht wissen. Was mir fehlte war, das CHR(0) das binäre NULLZEICHEN zurückgibt das ich löschen wollte (nur im Puffer, nicht in der Datei), um den Puffer durchsuchen zu können.
Viele Grüße,
Jannes