2016-04-16 6 views
-2

Beim lesen der documentation for php fopen für php sehe ich folgendes.fopen was ist das b flag

For portability, it is strongly recommended that you always use the 'b' flag when opening files with [fopen][1]().

Was ist der b-Flag und was tut sie?
Warum wird es dringend empfohlen?

+7

Es gibt weitere Informationen über oben Kenntnis von dem man Sie festgestellt haben. Es erzwingt den binären Modus. Msgstr "Wenn Sie bei der Arbeit mit Binärdateien nicht das 'b' Flag angeben, können seltsame Probleme mit Ihren Daten auftreten, einschließlich beschädigter Bilddateien und seltsamer Probleme mit \ r \ n Zeichen." – Ekin

+0

@Ekn warum nicht eine Antwort?:) –

+0

@DiligentKeyPresser Alles klar, als Antwort hinzugefügt, aber zuerst dachte ich, dass ich vielleicht die Frage markieren sollte, da die Antwort innerhalb der Frage selbst war: p – Ekin

Antwort

4

Das Flag 'b' erzwingt den binären Modus.

Sie verwenden das 'b' Flag, wenn Sie mit Binärdateien, dh. ein Bild.

Hinweis:

Wenn Sie eine Textdatei schreiben und wollen einen Zeilenumbruch einfügen, müssen Sie die richtigen Zeilenende-Zeichen (s) für Ihr Betriebssystem verwenden.

Unix-basierte Systeme \n als Zeilenende-Zeichen verwenden, Windows-basierte Systeme verwenden \r\n als die Zeilenumbrüche und Macintosh-basierte Systeme verwenden Endung \r als Zeilenendezeichen.

Windows bietet ein Textmodus-Übersetzungsflag ('t') an, das beim Arbeiten mit der Datei \n transparent in \r\n übersetzt.

Im Gegensatz dazu können Sie auch 'b' verwenden, um den Binärmodus zu erzwingen, der Ihre Daten nicht übersetzt.

Sie können unter Verwendung des 'b' Flag im mode Parameter, um die Übersetzung zu vermeiden. Beispiel Nutzung:

$handle_read = fopen($filepath, 'rb'); 

$handle_write = fopen("/home/user/file.gif", "wb"); 

So ... der Grund, dies empfohlen wird, ist klar gesagt auf die manual:

Wenn Sie nicht die ‚b‘ Flag angeben, wenn sie mit binären Dateien arbeiten, können Sie erfahre seltsame Probleme mit deinen Daten, einschließlich beschädigter Bilddateien und seltsamer Probleme mit \ r \ n Zeichen.

Die Verwendung von ‚b‘ Flag wird auch auf Handbuchseiten von fwrite() und fread() festgestellt, welche binären sicheren Funktionen Datei lesen/schreiben sind.

Warnung:

Auf Systemen, welche zwischen Binär- und Textdateien (das heißt Windows) die Datei unterscheiden muss mit 'b' im fopen() Parameter Modus geöffnet werden.

$filename = "c:\\files\\somepic.gif"; 
$handle = fopen($filename, "rb"); 
$contents = fread($handle, filesize($filename)); 
fclose($handle); 
+1

Die Dokumentation ist nicht klar. Es klingt, als ob ich das für Text- und Binärdateien tun sollte. Es scheint, als ob ich nur für Binärdateien wie Bilder oder Audio tun sollte. – nelaaro