Im vorherigen Artikel haben wir die Methode zum gleichzeitigen Lesen der gesamten Datei und zum Abrufen aller Daten vorgestellt. Wenn Sie interessiert sind, können Sie auf den Link klicken, um „php-Dateioperation: So erhalten Sie alle Daten von“ anzuzeigen die Datei auf einmal". Heute stellen wir eine andere Methode zum gleichzeitigen Lesen der gesamten Datei vor. Sie können bei Bedarf darauf zurückgreifen.
Die Methode, die ich Ihnen heute vorstellen werde, kann nicht nur die gesamte Datei auf einmal lesen, sondern auch den gelesenen Dateiinhalt in einer Zeichenfolge speichern. Ist das nicht erstaunlich? Dies erfordert die Verwendung einer in PHP integrierten Funktion file_get_contents(). Lassen Sie uns heute etwas über diese Funktion lernen.
Nehmen wir als Beispiel die Datei „test.txt“. Der Inhalt der Datei ist:
Sehen wir uns zunächst an, wie man die Datei mit der Funktion file_get_contents() liest und den Inhalt in einem String speichert.
<?php header("Content-Type: text/html;charset=utf-8"); //设置字符编码 $file = 'test.txt'; $filestr = file_get_contents($file); if($filestr){ echo $filestr; }else{ echo '读取失败!'; } ?>
Ausgabeergebnis:
Es ist ersichtlich, dass der Dateivorgang nicht geöffnet oder geschlossen werden muss und die gesamte Datei auf einmal gelesen werden kann, indem „file_get_contents($file )
“-Anweisung ist der zuvor eingeführten Funktion readfile() sehr ähnlich, unterscheidet sich jedoch dennoch: Die Funktion file_get_contents() speichert die gelesenen Daten in einer Zeichenfolge, während die Funktion readfile() die gelesenen Daten speichert im Ausgabepuffer. file_get_contents($file)
”语句就可以一次性读取整个文件了,这一点和之前介绍的readfile()函数很像,但它们还是有所不同的:file_get_contents()函数会将读取的数据存入一个字符串中,而readfile()函数是存入输出缓冲中。
因此readfile()函数不需要echo、print等输出语句就可以输出,直接“readfile($file);
”就行;而file_get_contents()函数需要借助输出语句才能将读取的内容进行输出,“echo file_get_contents($file)
”。
下面我们来具体了解一下file_get_contents()函数的用法:
file_get_contents($filename,$include_path,$context,$offset,$max_length)
函数只有一个必需参数$filename
(要读取的文件,可以是文件名,也可是文件路径),但有4个可省略的参数:$include_path
(默认值FALSE)、$context
(文件句柄环境,值可为NULL)、$offset
(开始读取的位置)、$max_length(读取字节数)。
其中,不能对远程文件使用$offset
参数;如果省略$max_length
参数,则会和上面示例那样,默认读取文件的全部内容。
下面我们来看看$offset
和$max_length
参数。
<?php header("Content-Type: text/html;charset=utf-8"); //设置字符编码 $file = 'test.txt'; $filestr1 = file_get_contents($file,FALSE,NULL,3); echo $filestr1; $filestr2 = file_get_contents($file,FALSE,NULL,0,15); echo "<br>".$filestr2; ?>
输出结果:
可以看出,$max_length
参数设置为15,却只获取了7个字符,这是为什么呢?
那是因为:在file_get_contents()函数中一个 UTF-8 编码的汉字占三个字符长度。而如果设置的获取长度不够,无法获取到的那个中文字符,就会显示为?
echo file_get_contents($file)
“. Sehen wir uns die Verwendung der Funktion file_get_contents() genauer an: file_get_contents($filename,$include_path,$context,$offset,$max_length)
Die Funktion hat nur einen erforderlichen Parameter $ filename
(die zu lesende Datei kann ein Dateiname oder ein Dateipfad sein), aber es gibt 4 Parameter, die weggelassen werden können: $include_path
(Standardwert FALSE) , $context
(Datei-Handle-Umgebung, Wert kann NULL sein), $offset
(Position zum Beginn des Lesens), $max_length (Anzahl der gelesenen Bytes).
Unter anderem kann der Parameter $offset
nicht für Remote-Dateien verwendet werden; wenn der Parameter $max_length
weggelassen wird, wird standardmäßig der gesamte Inhalt der Datei gelesen im obigen Beispiel. Werfen wir einen Blick auf die Parameter $offset
und $max_length
.
<?php header("Content-Type: text/html;charset=utf-8"); //设置字符编码 $file = 'test.txt'; $filestr1 = file_get_contents($file,FALSE,NULL,6); echo $filestr1; $filestr2 = file_get_contents($file,FALSE,NULL,0,16); echo "<br>".$filestr2; $filestr3 = file_get_contents($file,FALSE,NULL,0,18); echo "<br>".$filestr3; ?>
$max_length
auf 15 gesetzt ist, aber nur 7 Zeichen erhalten werden. Warum ist das so? 🎜🎜Das liegt daran: In der Funktion file_get_contents() belegt ein UTF-8-kodiertes chinesisches Zeichen eine Länge von drei Zeichen. Und wenn die eingestellte Erfassungslänge nicht ausreicht, wird das chinesische Zeichen, das nicht abgerufen werden kann, als angezeigt?
Nr. 🎜rrreee🎜Ausgabeergebnis: 🎜🎜🎜🎜🎜Okay, das ist alles. Wenn Sie noch etwas wissen möchten, können Sie hier klicken. → →🎜php-Video-Tutorial🎜🎜🎜 Abschließend empfehle ich die Lektüre eines klassischen Kurses „🎜PHP String Processing (Jade Girl Heart Sutra Edition)🎜“, er ist kostenlos ~ kommen Sie und lernen Sie! 🎜Das obige ist der detaillierte Inhalt vonSo speichern Sie alle Daten einer Datei in einem String in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!