Dans l'article précédent "Opération sur les fichiers php - lecture des fichiers caractère par caractère" nous avons présenté une méthode de lecture de fichiers : lire les fichiers caractère par caractère. Dans cet article, nous allons vous montrer une autre façon de lire des fichiers : lire le fichier ligne par ligne. Voyons comment lire le contenu du fichier ligne par ligne et le sortir.
Il existe un fichier texte nommé "test.txt", le contenu à l'intérieur est :
Comment pouvons-nous lire le contenu du fichier ligne par ligne et le sortir ? C’est simple, aujourd’hui nous allons vous présenter deux méthodes.
Méthode 1 : Utilisation de la fonction fgets()
Jetons un coup d'œil à l'exemple de code :
<?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); //关闭文件 ?>
Résultats de sortie :
Analyse des fonctions clés :
La fonction fgets() est utilisée pour ouvrez la lecture d'une ligne de données du fichier, en acceptant un paramètre obligatoire $file
(le fichier en cours d'ouverture) et un paramètre facultatif $length
(le nombre d'octets à read); Si le paramètre $length
est omis, la longueur de lecture par défaut est de 1 Ko (soit 1024 octets). La fonction $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>
caractère de nouvelle ligne
, un EOF
(lu jusqu'à la fin du fichier) ou après avoir atteint la longueur spécifiée $length-1 code> (La longueur maximale de la chaîne renvoyée est de <code>$length-1
octets). Si nous ne savons pas combien de données contient le fichier, nous pouvons utiliser la fonction filesize()
pour l'obtenir, qui peut renvoyer la taille du fichier spécifié (nombre d'octets).
L'exemple de code ci-dessus peut donc être modifié : rrreeeLe résultat de sortie est le même que ci-dessus.
Méthode 2 : Utilisez la fonction fgetss()
Jetons un coup d'œil à l'exemple de code : rrreeeRésultat de sortie : 🎜rrreee🎜Dans le code ci-dessus, nous définissons la valeur du paramètre $tags sur " ,<em></em>
", c'est-à-dire que les balises <h1></h1>
et <em></em>
ne sont pas filtrées, donc la sortie le résultat est : 🎜🎜🎜🎜 🎜🎜Remarque : 🎜Après avoir exploité le fichier, n'oubliez pas d'utiliser la fonction fclose() pour fermer le fichier ! 🎜🎜D'accord, c'est tout. Si vous voulez savoir autre chose, vous pouvez cliquer ici. → →🎜Fonctionnement de base des fichiers PHP🎜🎜🎜🎜Recommandé :🎜"🎜Collection de questions d'entretien PHP (collection)🎜" "🎜Tutoriel vidéo PHP🎜"🎜
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!