Gestion des fichiers PHP

PHP dispose d'une variété de fonctions pour créer, lire, télécharger et éditer des fichiers.

Attention : Merci de manipuler les fichiers avec prudence !

Vous devez être très prudent lorsque vous manipulez des fichiers. Si vous ne le faites pas correctement, vous pouvez causer des dommages très graves.

Les erreurs courantes sont :

1. Modification de mauvais fichiers

2. Remplir le disque dur avec des données indésirables

3. Suppression accidentelle du contenu du fichier


Fonction PHP readfile()

readfile($filename)

Fonction : transmettre un chemin de fichier et générer un fichier


Par exemple, il existe un fichier nommé file.txt avec le contenu suivant :

Bienvenue dans l'apprentissage du chinois PHP

Utiliser Le code PHP de la fonction readfile() pour lire ce fichier et l'écrire dans le flux de sortie est le suivant (si la lecture est réussie, la fonction readfile() renvoie le nombre d'octets) :

Nombre d'octets : anglais occupant un octet, le chinois codé en gbk occupe 2 utf-8 le chinois occupe 3 octets, les espaces et les symboles comptent pour 1

<?php
echo readfile("D:WWW/item/file.txt");
?>

Résultat de l'opération du programme :

Bienvenue dans l'apprentissage du chinois PHP PHP39


file_get_contentsOpen file

ci-dessus Ouvrez simplement le fichier et il sera affiché directement. Existe-t-il une méthode d'opération qui peut être attribuée à une variable après l'ouverture du fichier ?

PHP fournit certainement cette méthode. Cette méthode est l'un des moyens par lesquels PHP ouvre un fichier et renvoie le contenu. Jetons un coup d'œil à la fonction :


file_get_contents (string filename)

Fonction : Transmettre un fichier ou un chemin de fichier, ouvrir le fichier et renvoyer le contenu du fichier. Le contenu du fichier est une chaîne.

Par exemple, il existe un fichier file.txt avec le contenu suivant :

J'utilise le file_get_contents open

Utilisez file_get_contents pour ouvrir

<?php
$fileName="file.txt";
$filestring = file_get_contents($fileName);
echo $filestring;
?>

Résultat en cours d'exécution du programme :

J'utilise l'open file_get_contents


opérations fopen, fread, fclose lecture de fichiers

fopen ($nom du fichier, mode)

fread ($ressource d'opération, longueur de lecture)

fclose ($opération ressource)

Grâce à la fonction ci-dessus, nous expliquerons les méthodes de fonctionnement habituelles des types de ressources :

1. Ouvrir les ressources

2. Utiliser les fonctions associées pour fonctionner

3. Fermer les ressources

fopenLa fonction de la fonction fopen est d'ouvrir un fichier. Il y a deux paramètres principaux :

1. Le chemin pour ouvrir le fichier

2. Le type de ressource nécessite d'autres fonctions pour faire fonctionner cette ressource. Toutes les ressources doivent être fermées lors de leur ouverture. Fonction

fread La fonction de la fonction est de lire la ressource du fichier ouvert. Lisez la ressource fichier de la longueur spécifiée, lisez-en une partie et déplacez-la vers l'arrière. jusqu'à la fin du fichier.

fcloseFonction La fonction fclose est de fermer les ressources. Les ressources sont ouvertes et fermées.

mode ouvert (tableau ci-dessous) :

rLecture seule. Commencez au début du fichier.  r+Lecture/Ecriture. Commencez au début du fichier. Écrire uniquement. Ouvre et efface le contenu du fichier ; si le fichier n'existe pas, crée un nouveau fichier.
Mode Description


  w

 

 w+

Lecture/Ecriture. Ouvre et efface le contenu du fichier ; si le fichier n'existe pas, crée un nouveau fichier.

     

  a

追加。打开并向文件末尾进行写操作,如果文件不存在,则创建新文件。
  a+读/追加。通过向文件末尾写内容,来保持文件内容。

   

  x

只写。创建新文件。如果文件已存在,则返回 FALSE 和一个错误。

  

  x+

读/写。创建新文件。如果文件已存在,则返回 FALSE 和一个错误。
  twindows下将n转为rn
     b二进制打开模式
<🎜> a<🎜><🎜><🎜> ajouté. Ouvre et écrit à la fin du fichier, ou crée un nouveau fichier s'il n'existe pas. <🎜><🎜>
 a+<🎜> Lire/Ajouter. Conservez le contenu du fichier en écrivant à la fin du fichier. <🎜><🎜>
<🎜> < 🎜><🎜> x<🎜><🎜>Uniquement Écrire. Créez un nouveau fichier. Si le fichier existe déjà, renvoie FALSE et une erreur. <🎜><🎜>
<🎜> < 🎜><🎜> x+<🎜><🎜>Lire /Écrire. Créez un nouveau fichier. Si le fichier existe déjà, renvoie FALSE et une erreur. <🎜><🎜>
 t<🎜> Convertir n en rn sous Windows<🎜><🎜> < 🎜><🎜><🎜> b<🎜><🎜>Mode ouvert binaire<🎜><🎜><🎜><🎜 >

1. Ouvrez le fichier

file.txt Le contenu de le fichier file.txt est le suivant

De rien

<?php
//你可以创建一个file.txt,以只读模式打开
$fp = fopen('file.txt', "r");
//var_dump()操作一下$fp看看效果,输出的是不是只有类型提示的是resource
var_dump($fp);
?>

2. Lisez le fichier

<?php
$fp = fopen('file.txt', "r");
//打开一个文件类型后,读取12个字节
$contents = fread($fp, 12);
?>

3. Fermez le fichier

<?php
$fp = fopen('file.txt', 'r');
$contents = fread($fp, 1024);
fclose($fp);
echo $contents;
?>

Résultat de l'exécution du programme :

De rien


file_put_contents et fwrite écrire des fichiers

file_put_contents ( string $chemin du fichier, string $write data])

Fonction : Écrire dans le fichier spécifié Une chaîne pour créer le fichier s'il n'existe pas. Renvoie la longueur des octets écrits


instance

<?php
header("Content-type:text/html;charset=utf-8");    //设置编码
$data = "我是一个兵,来自老百姓";
$numbytes = file_put_contents('binggege.txt', $data);
if($numbytes){
    echo '写入成功,我们读取看看结果试试:';
    echo file_get_contents('binggege.txt');
}else{
    echo '写入失败或者没有权限,注意检查';
}
?>

Le résultat du programme en cours d'exécution :

L'écriture est réussie, lisons et voyons le résultat : Je suis un soldat, issu du peuple


fwrite ( ressource $fichier variable de ressource, chaîne $chaîne écrite[, longueur int ])

Remarque : La fonction d'alias de fwrite est fputs

Nous avons essayé le mode r ci-dessus, mais il n'a été utilisé que lors de la lecture. Ensuite, nous utilisons fwrite pour ajouter Use w in. fopen pour écrire des fichiers en mode écriture

instance

Vous pouvez essayer de créer un nouveau fichier test.txt et d'y écrire du contenu. Ensuite, vous pouvez essayer de supprimer test.txt. Voyez quels sont les conseils disponibles.

<?php
header("Content-type:text/html;charset=utf-8");    //设置编码
$filename = 'test.txt';
$fp= fopen($filename, "w");
$len = fwrite($fp, '我是一只来自南方的狼,一直在寻找心中的花姑娘');
fclose($fp);
print $len ."字节被写入了\n";
?>

Résultat de l'exécution du programme :

66 octets ont été écrits

Résumé :
1. Qu'il y ait un nouveau fichier ou non, le fichier sera ouvert et réécrit
2. Le fichier d'origine le contenu sera écrasé
3. Si le fichier n'existe pas, il sera créé


Comparez les différences entre les modes suivants :

  模式  说明
  r只能读不能使用fwrite写
  r+可操作读、写
  w只可以写功能
  w+

即可读又可以写


Instance

<?php
header("Content-type:text/html;charset=utf-8");    //设置编码
$filename = 'test.txt';
$fp= fopen($filename, "r");
$len = fwrite($fp, '我是一只来自南方的狼,一直在寻找心中的花姑娘');
fclose($fp);
print $len .'字节被写入了\n';
?>

Résultat de l'exécution du programme :

0 octet est écrit après en entrant n

nous avons constaté que l'écriture avec r seul échouait


Création d'un fichier temporaire

Les fichiers que nous avons créés auparavant sont des fichiers permanents.

La création de fichiers temporaires est également très utile dans le développement quotidien de nos projets. Plusieurs avantages de la création de fichiers temporaires

1. Supprimez-les après utilisation

2 Il n'est pas nécessaire de maintenir l'état de suppression de ce fichier

Par exemple : j'ai besoin de le faire. supprimer les A, transférer le contenu du fichier vers B et transférer le contenu du fichier de B vers C.

Tout comme dans la vraie vie, je peux d'abord utiliser une bouteille temporaire pour remplir l'eau de B, puis écrire les données de A dans B. Ajoutez l'eau de la bouteille temporaire à C.

Apprenons cette fonction :

ressource tmpfile ( )

Fonction : Créer un fichier temporaire et renvoyer le type de ressource. Le fichier est supprimé lorsqu'il est fermé.

Instance

<?php
header("Content-type:text/html;charset=utf-8");    //设置编码
$handle = tmpfile();
//向里面写入了数据
$numbytes = fwrite($handle, '写入临时文件的内容');
//关闭临时文件,文件即被删除
fclose($handle);
echo  '向临时文件中写入了'.$numbytes . '个字节';
?>

Résultat de l'exécution du programme :

Écrire dans un fichier temporaire Saisi 27 octets


Déplacer, copier, supprimer des fichiers

Renommer le fichier

renommer($ancien nom,$nouveau nom);

Cette fonction renvoie une valeur booléenne et remplace l'ancien nom par le nouveau nom.

Exemple

<?php
$fileName1="text.txt";
$fileName2="text--1.txt";
rename($fileName1,$fileName2);
?>

L'exemple ci-dessus consiste à renommer un fichier text.txt en text--1.txt. pouvez essayer


copier le fichier

copier( fichier source , fichier cible)

Fonction : Copiez le fichier source avec le chemin spécifié vers l'emplacement du fichier cible.

Exemple

<?php
$filename = 'file.txt';  //旧文件名
$filename2 = 'copy-file.txt';  //新文件名
copy($filename, $filename2);    //修改名字。
?>

L'exemple ci-dessus consiste à nommer un fichier file.txt , copiez un fichier nommé copy-file.txt avec le même contenu.


Supprimer le fichier

dissocier (fichier avec le chemin spécifié)

Exemple

<?php
header("Content-type:text/html;charset=utf-8");    //设置编码
$filename = 'test.txt';
unlink($filename);
?>

L'exemple ci-dessus consiste à supprimer un fichier nommé test.txt


Fonctions couramment utilisées dans les fichiers

taille du fichier Détecter la taille du fichier

Exemple

<?php
header("Content-type:text/html;charset=utf-8");    //设置编码
$filename = 'file.txt';
echo $filename . '文件大小为: ' . filesize($filename) . ' bytes';
?>

Résultat de l'exécution du programme :

la taille du fichier file.txt est : 14 octets

Autres fonctions d'exploitation des fichiers, lecture de fichiers

< largeur de la table ="-642">
 
  函数名  功能
  file把整个文件读入一个数组中
  fgets从文件指针中读取一行,读到最后返回false
  fgetc从文件指针中读取一个字符,读到最后返回false
  ftruncate将文件截断到给定的长度
<🎜>Nom de la fonction<🎜><🎜>
 <🎜><🎜>Fonction<🎜><🎜>
fichierLire le fichier entier dans un tableau
 fgetsLire une ligne à partir du pointeur de fichier et renvoyer false après avoir lu jusqu'à la fin
 fgetcLire un caractère à partir du pointeur de fichier et renvoyer false après avoir lu jusqu'à la fin
 ftruncateTronquer le fichier à la longueur donnée


Nous utilisons un exemple pour utiliser toutes les fonctions ci-dessus.

Nous écrivons un lot de fichiers dans le fichier text.txt :

abcdeefghijklk
opqrst
uvwxyz
12345678

fgetc lit un

<?php
//以增加的r模式打开
$fp = fopen('text.txt','r+');
//你分发现每次只读一个字符
echo  fgetc($fp) ."<br>";
//我要全部读取可以,读取一次将结果赋值一次给$string
while($string = fgetc($fp)){
    echo $string;
}
?>

Résultat en cours d'exécution du programme :

a
bcdeefghijklk opqrst uvwxyz 12345678

fgets ouvre une ligne à la fois :

<?php
//以增加的r模式打开
$fp = fopen('text.txt','r+');
//你分发现每次只读一个字符
echo  fgets($fp)."<br>";
echo  fgets($fp)."<br>";
echo  fgets($fp)."<br>";
echo  fgets($fp);
?>

Le programme s'exécute Résultat :

abcdeefghijklk
opqrst
uvwxyz
12345678


Fonction d'interception de fichiers

<?php
//打开我们上面的text.txt文件
$file = fopen("text.txt", "a+");
//你可以数数20个字有多长,看看是不是达到效果了
echo ftruncate($file,10);
fclose($file);
?>

Exécutez le programme et ouvrez le fichier text.txt pour voir s'il y a 20 octets


Fonction temporelle du fichier

< tr>
    函数   功能说明
    filectime  文件创建时间
    filemtime  文件修改时间
    fileatime  文件上次访问时间
<🎜> Fonction<🎜> <🎜>
<🎜><🎜> Description de la fonction< 🎜><🎜>
filectime Heure de création du fichier
filemtime Heure de modification du fichier fileatime Heure du dernier accès au fichier

Instance

<?php
header("Content-type:text/html;charset=utf-8");    //设置编码
$filename = 'text.txt';

if (file_exists($filename)) {
    echo "$filename"."文件的上次访问时间是: " . date("Y-m-d H:i:s", fileatime($filename))."<br>";

    echo "$filename"."文件的创建时间是: " . date("Y-m-d H:i:s", filectime($filename))."<br>";

    echo "$filename"."文件的修改时间是: " . date("Y-m-d H:i:s", filemtime($filename));
}

?>

Résultat de l'exécution du programme :

Dernier accès au fichier text.txt Le l'heure est : 2016-09-13 17:44:40
L'heure de création du fichier text.txt est : 2016-09-13 17:32:16
L'heure de modification du fichier text.txt est : 2016-09 -13 17:44:55


Fonction de traitement de répertoire

Avant, tout ce que nous traitions était fichiers, ce répertoire Comment gérer les dossiers ?

Apprenons les fonctions liées au traitement des répertoires ou des dossiers.

L'idée de base du traitement des dossiers est la suivante :

1. Lire un certain Lors de la détermination du chemin, déterminez s'il s'agit d'un dossier

2 S'il s'agit d'un dossier, ouvrez le dossier spécifié et renvoyez la variable de ressource du répertoire de fichiers

3. readdir pour lire les fichiers dans le répertoire une fois. Le pointeur du répertoire est décalé une fois vers l'arrière

4. Utilisez readdir pour lire jusqu'à la fin, s'il n'y a pas de fichier lisible, renvoyez false

5. Fermez le répertoire de fichiers

Découvrons-le Fonctions les plus couramment utilisées :


< tr>< td width="193" valign="top" style="border-width: 1px; border-style: solid; word-break: break-all ;">readdir
      函数名       功能
  opendir打开文件夹,返回操作资源
  readdir读取文件夹资源
  is_dir判断是否是文件夹
  closedir关闭文件夹操作资源
<🎜> Nom de la fonction<🎜>< 🎜>
<🎜><🎜> Fonction <🎜><🎜>
opendirOuvrez le dossier et retour aux ressources d'exploitation
Lire les ressources du dossier
 is_dirDéterminer s'il s'agit d'un dossier
 closedirFermer les ressources d'opération du dossier
  filetype显示是文件夹还是文件,文件显示file,文件夹显示dir


Instance

<?php
//设置打开的目录是D盘
$dir = "D:/";
//判断是否是文件夹,是文件夹
if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
        //读取一次向后移动一次文件夹指针
        echo readdir($dh).'<br />';
        echo readdir($dh).'<br />';
        echo readdir($dh).'<br />';
        echo readdir($dh).'<br />';
        echo readdir($dh).'<br />';
        echo readdir($dh).'<br />';
        //读取到最后返回false
        //关闭文件夹资源
        closedir($dh);
    }
}
?>

Vous pouvez exécuter ce programme pour voir s'il s'agit du répertoire du lecteur D de votre ordinateur


Déterminez le type de fichier

<?php
//设置打开的目录是D盘
$dir = "D:/";
//判断是否是文件夹,是文件夹
if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
        //读取到最后返回false,停止循环
        while (($file = readdir($dh)) !== false) {
            echo "文件名为: $file : 文件的类型是: " . filetype($dir . $file) . "<br />";
        }
        closedir($dh);
    }
}
?>

Exécutez le programme et jetez un œil


Fonction de chemin de fichier

Nous avons souvent rencontrer des conditions de chemin de traitement des fichiers.

Par exemple :

1 Le suffixe du fichier doit être supprimé

2. extraire le nom mais pas le répertoire

3. Il vous suffit de supprimer le chemin du répertoire dans le nom du chemin

4. Ou analyser chaque partie de l'URL pour obtenir des valeurs indépendantes

.

5. Ou même créer une URL par vous-même Sortez

De nombreux endroits nécessitent l'utilisation de fonctions de classe de traitement de chemin.

Nous avons marqué les fonctions de traitement de chemin couramment utilisées pour tout le monde. Vous pouvez simplement traiter cette fonction de traitement de chemin :

.
     函数名      功能
 pathinfo返回文件的各个组成部份
 basename返回文件名
    dirname文件目录部份
    parse_url 网址拆解成各部份
<🎜> Nom de la fonction< 🎜><🎜 >
<🎜>< 🎜> Fonction< 🎜><🎜>
pathinfoRetour Divers composants du document
basename Retourner le nom du fichier
dirnamePartie du répertoire de fichiers
parse_url Divisez l'URL en plusieurs parties
   http_build_query生成url 中的query字符串
   http_build_url生成一个url

pathinfo

pathinfo (string $path)
Fonction : transmettre le chemin du fichier et renvoyer chacun fichier Composant

Instance

<?php
header("Content-type:text/html;charset=utf-8");
$path_parts = pathinfo('D:/www/a.html');
echo '文件目录名:'.$path_parts['dirname']."<br />";
echo '文件全名:'.$path_parts['basename']."<br />";
echo '文件扩展名:'.$path_parts['extension']."<br />";
echo '不包含扩展的文件名:'.$path_parts['filename']."<br />";
?>

Résultat de l'exécution du programme :

Nom du répertoire de fichiers : D:/www
Nom complet du fichier : a.html
Extension du fichier : html
Nom du fichier sans extension : a


nom de base

basename ( string $path[, string $suffix])
Fonction : Passer le chemin et renvoyer le nom du fichier
Le premier paramètre passe dans le chemin.
Le deuxième paramètre précise que mon nom de fichier s'arrêtera lorsqu'il atteindra le caractère spécifié.

Instance

<?php
echo "1: ".basename("d:/www/a.html", ".d")."<br>";
echo "2: ".basename("d:/www/include")."<br>";
echo "3: ".basename("d:/www/text.txt")."<br>";
?>

Résultat de l'exécution du programme :

1 : a.html
2 : inclure
3 : text.txt


dirname

dirname(string $path )
Fonction : Renvoie la partie répertoire du fichier du chemin du fichier

Instance

<?php
$a=dirname(__FILE__);
echo$a;
?>

Exécutez votre programme


parse_url

parse_url (string $path)
Fonction : Divisez l'URL en plusieurs parties

Instance

<?php
$url = 'http://username:password@hostname:9090/path?arg=value#anchor';
var_dump(parse_url($url));
?>

Résultat de l'exécution du programme :

tableau (8) {
["scheme"]=>
string(4) "http"
["host"]=>
string(8) "hostname"
[ "port" ]=>
int(9090)
["user"]=>
string(8) "username"
["pass"]=>
string (8) "mot de passe"
["chemin"]=>
string(5) "/chemin"
["query"]=>
string(9) "arg=value "
["fragment"]=>
string(6) "anchor"
}


http_build_query

http_build_query (données $ mixtes à traiter)
Fonction : générer une chaîne de requête dans l'url

Instance

<?php
//定义一个关联数组
$data = [
    'username'=>'liwenkai',
    'area'=>'hubei',
    'pwd'=>'123'
];
//生成query内容
echo http_build_query($data);
?>

Résultat de l'exécution du programme :

username= liwenkai&area=hubei&pwd=123


Manuel de référence du système de fichiers PHP

Pour un manuel de référence complet des fonctions du système de fichiers PHP, veuillez visiter notre manuel de référence du système de fichiers PHP.


Formation continue
||
<?php header("Content-type:text/html;charset=utf-8"); $data = "我是一个兵,来自老百姓"; $numbytes = file_put_contents('binggege.txt', $data); if($numbytes){ echo '写入成功,我们读取看看结果试试:'; echo file_get_contents('binggege.txt'); }else{ echo '写入失败或者没有权限,注意检查'; } ?>
soumettreRéinitialiser le code
  • Recommandations de cours
  • Téléchargement du didacticiel