Maison >développement back-end >Problème PHP >Comment stocker toutes les données d'un fichier dans une chaîne en php
Dans l'article précédent, nous avons présenté la méthode de lecture de l'intégralité du fichier en une seule fois et d'obtention de toutes les données. Si vous êtes intéressé, vous pouvez cliquer sur le lien pour voir « Opération sur le fichier php : Comment obtenir toutes les données de. le fichier en une seule fois". Aujourd'hui, nous allons présenter une autre méthode de lecture de l'intégralité du fichier en une seule fois. Vous pouvez vous y référer si nécessaire.
La méthode que je vais vous présenter aujourd'hui permet non seulement de lire l'intégralité du fichier en une seule fois, mais également de stocker le contenu du fichier lu dans une chaîne. N'est-ce pas incroyable ? Cela nécessite l'utilisation d'une fonction intégrée à PHP file_get_contents(). Découvrons cette fonction aujourd'hui.
Prenons le fichier « test.txt » comme exemple. Le contenu du fichier est :
Voyons d'abord comment utiliser la fonction file_get_contents() pour lire le fichier et stocker le contenu dans une chaîne.
<?php header("Content-Type: text/html;charset=utf-8"); //设置字符编码 $file = 'test.txt'; $filestr = file_get_contents($file); if($filestr){ echo $filestr; }else{ echo '读取失败!'; } ?>
Résultat de sortie :
On peut voir qu'il n'est pas nécessaire d'ouvrir ou de fermer l'opération sur le fichier, et le fichier entier peut être lu en une seule fois en utilisant directement le "file_get_contents($file )
", ceci est très similaire à la fonction readfile() introduite précédemment, mais elles sont toujours différentes : la fonction file_get_contents() stocke les données lues dans une chaîne, tandis que la fonction readfile() stocke les données lues dans le tampon de sortie. 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 编码的汉字占三个字符长度。而如果设置的获取长度不够,无法获取到的那个中文字符,就会显示为?
readfile($file);
" fera l'affaire tandis que la fonction file_get_contents() a besoin de la fonction readfile(). aide des instructions de sortie à lire Le contenu est affiché, "echo file_get_contents($file)
". Regardons de plus près l'utilisation de la fonction file_get_contents() : file_get_contents($filename,$include_path,$context,$offset,$max_length)
La fonction n'a qu'un seul paramètre obligatoire $ filename
(le fichier à lire peut être un nom de fichier ou un chemin de fichier), mais il y a 4 paramètres qui peuvent être omis : $include_path
(valeur par défaut FALSE) , $context
(environnement de gestion de fichier, la valeur peut être NULL), $offset
(position pour commencer la lecture), $max_length (nombre d'octets lus).
Parmi eux, le paramètre $offset
ne peut pas être utilisé pour les fichiers distants ; si le paramètre $max_length
est omis, tout le contenu du fichier sera lu par défaut comme dans l'exemple ci-dessus. Jetons un coup d'œil aux paramètres $offset
et $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; ?>🎜🎜On peut voir que le paramètre
$max_length
est défini sur 15, mais seulement 7 caractères sont obtenus. Pourquoi cela ? 🎜🎜C'est parce que : dans la fonction file_get_contents(), un caractère chinois codé en UTF-8 occupe trois caractères de longueur. Et si la longueur d'acquisition définie n'est pas suffisante, le caractère chinois qui ne peut pas être obtenu sera affiché comme ?
Non. 🎜rrreee🎜Résultat de sortie : 🎜🎜🎜🎜🎜D'accord, c'est tout si vous voulez savoir autre chose, vous pouvez cliquer ici. → →🎜Tutoriel vidéo php🎜🎜🎜 Enfin, je recommande de lire un cours classique "🎜PHP String Processing (Jade Girl Heart Sutra Edition)🎜", c'est gratuit~ venez apprendre ! 🎜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!