Im vorherigen Artikel „php-Dateioperation – Dateien zeichenweise lesen“ haben wir eine Methode zum Lesen von Dateien vorgestellt: Dateien zeichenweise lesen. In diesem Artikel zeigen wir Ihnen eine andere Möglichkeit, Dateien zu lesen: Lesen Sie die Datei Zeile für Zeile und geben Sie sie gemeinsam aus.
Es gibt eine Textdatei mit dem Namen „test.txt“, der Inhalt darin ist:
Wie lesen wir den Inhalt der Datei Zeile für Zeile und geben ihn aus? Ganz einfach, heute stellen wir Ihnen zwei Methoden vor.
Method 1: Verwenden Öffnen Sie die Datei. Lesen Sie eine Datenzeile aus der Datei und akzeptieren Sie dabei einen erforderlichen Parameter $file
(die Datei, die geöffnet wird) und einen optionalen Parameter $length
(die Anzahl der zu öffnenden Bytes). read); Wenn der Parameter $length
weggelassen wird, beträgt die Standard-Leselänge 1 KB (d. h. 1024 Byte).
Neuzeilenzeichen
, EOF
(bis zum Ende der Datei gelesen) oder die angegebene Länge $length-1 erreicht wurde. code> (Die maximale Länge der zurückgegebenen Zeichenfolge beträgt <code>$length-1
Bytes).
Wenn wir nicht wissen, wie viele Daten sich in der Datei befinden, können wir sie mit der Funktion filesize()
abrufen, die die Größe der angegebenen Datei (Anzahl der Bytes) zurückgeben kann.
Das obige Codebeispiel kann also geändert werden:
<?php header("Content-Type: text/html;charset=utf-8"); //设置字符编码 $handle = fopen('./test.txt', 'r'); //打开文件 if (!$handle) { //判断文件是否打开成功 echo '文件打开失败!'; } while (false !== ($char = fgets($handle,1024))) { //循环读取文件内容 echo $char."<br>"; } fclose($handle); //关闭文件 ?>
Methode 2: Funktion fgetss() verwenden
Schauen wir uns das Codebeispiel an: $file
(被打开的文件)和一个可选参数$length
(要读取的字节数);如果省略了 $length
参数,则默认读取 1k(即1024字节)长度。
fgets()函数在遇到换行符
、EOF
(读到文件末尾)或者到达指定长度 $length-1
后停止(返回字符串长度最大值为 $length-1
个字节)。
如果我们不知道文件中有多少数据,可以使用filesize()
函数来获取,该函数可以返回指定文件的大小(字节数)。
所以上面的代码示例可以修改一下:
<?php header("Content-Type: text/html;charset=utf-8"); //设置字符编码 $url = './test.txt'; $handle = fopen($url, 'r'); //打开文件 $size= filesize($url); //计算文件大小 if (!$handle) { //判断文件是否打开成功 echo '文件打开失败!'; } while (false !== ($char = fgets($handle,$size))) { //循环读取文件内容 echo $char."<br>"; } fclose($handle); //关闭文件 ?>
输出结果和上面是一样的。
方法2:使用fgetss()函数
我们来看看代码示例:
<?php header("Content-Type: text/html;charset=utf-8"); //设置字符编码 $handle = fopen('./test.txt', 'r'); //打开文件 if (!$handle) { //判断文件是否打开成功 echo '文件打开失败!'; } while (false !== ($char = fgetss($handle,1024))) { //循环读取文件内容 echo $char."<br>"; } fclose($handle); //关闭文件 ?>
输出结果:
关键函数分析:
fgetss()函数和fgets()函数相似,都可以从打开的文件中读取一行数据,不同的是fgetss()函数会过滤掉数据中的 HTML 和 PHP 标签。
fgetss() 函数接受一个必需参数$file
、两个可选参数$length
和$tags
。参数$file和$length在fgets()函数中介绍过来,大家可以去上文了解。而参数$tags
是用来指定哪些标记不被去掉,我们通过一个例子来具体了解一下:
<?php header("Content-Type: text/html;charset=utf-8"); //设置字符编码 $handle = fopen('./test.txt', 'r'); //打开文件 if (!$handle) { //判断文件是否打开成功 echo '文件打开失败!'; } while (false !== ($char = fgetss($handle,1024,"<h1>,<em>"))) { //循环读取文件内容 echo $char."<br>"; } fclose($handle); //关闭文件 ?>
在上面的代码中,我们设置参数$tags的值为“<h1>,<em></em>
</h1>
”,也就是不过滤<h1></h1>
和<em></em>
rrreee
Schlüsselfunktionsanalyse: Die Funktion fgetss() ähnelt der Funktion fgets(), beide können es sein Aus der geöffneten Datei erhalten Lesen Sie eine Datenzeile ein. Der Unterschied besteht darin, dass die Funktion fgetss() HTML- und PHP-Tags in den Daten herausfiltert. Die Funktion
fgetss() akzeptiert einen erforderlichen Parameter $file
, zwei optionale Parameter $length
und $tags
. Die Parameter $file und $length werden in der Funktion fgets() eingeführt. Mehr darüber erfahren Sie oben. Der Parameter $tags
wird verwendet, um anzugeben, welche Tags nicht entfernt werden. Lassen Sie uns anhand eines Beispiels mehr darüber erfahren:
Im obigen Code setzen wir den Wert des Parameters $tags auf „ ,<em></em>
“, d. h. die Tags <h1></h1>
und <em></em>
werden nicht gefiltert, daher die Ausgabe Das Ergebnis ist: Hinweis:
Das obige ist der detaillierte Inhalt vonPHP-Dateioperation: Dateien Zeile für Zeile lesen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!