(Avancé) Fonctions d'opération de fichiers couramment utilisées en PHP

黄舟
Libérer: 2023-03-05 12:30:02
original
1221 Les gens l'ont consulté

Voici les fonctions d'opération de fichiers PHP. Bien sûr, ce n’est qu’une partie, il y en a bien d’autres que je n’ai pas cités.

1. Analyser le chemin :

1 Obtenez le nom du fichier :

basename();
donne une chaîne contenant le chemin complet d'un fichier, cette fonction renvoie le nom du fichier de base. Si le nom du fichier se termine par un suffixe, cette partie sera également supprimée.
par exemple :

$path = "/home/httpd/html/index.php";
$file = basename($path,".php"); // $file is set to "index"
Copier après la connexion

2 Récupère la partie répertoire :
dirname();
donne un répertoire contenant le chemin complet d'un fichier String , cette fonction renvoie le nom du répertoire après avoir supprimé le nom du fichier.
par exemple :

$path = "/etc/passwd";
$file = dirname($path); // $file is set to "/etc"
Copier après la connexion

3 Récupère le tableau associatif du chemin
pathinfo();
Récupère les trois parties d'un chemin spécifié : nom du répertoire , nom de base, extension.
par exemple :

$pathinfo = pathinfo("www/test/index.html");
var_dump($pathinfo);
// $path['dirname']
$path['basename']
$path['extenssion']
Copier après la connexion


2. Type de fichier
1. filetype();
Renvoie le type de fichier. Les valeurs possibles sont fifo, char, dir, block, link, file et inconnu.
par exemple :

echo filetype('/etc/passwd'); // file
echo filetype('/etc/');        // dir
Copier après la connexion


3. Obtenez un tableau d'informations utiles pour un fichier donné (très utile)

1. > Passé Le pointeur de fichier ouvert obtient les informations sur le fichier
Obtient les informations statistiques du fichier ouvert par le handle du pointeur de fichier. Cette fonction est similaire à la fonction stat(), sauf qu'elle opère sur un pointeur de fichier ouvert au lieu d'un nom de fichier.
par exemple :

// 打开文件
$fp = fopen("/etc/passwd", "r");
// 取得统计信息
$fstat = fstat($fp);
// 关闭文件
fclose($fp);
// 只显示关联数组部分
print_r(array_slice($fstat, 13));
Copier après la connexion
2. stat()

Obtenir les informations statistiques du fichier spécifié par nom de fichier (analogue à fstat())

4. Calculez la taille

1. filesize()
Renvoie le nombre d'octets de la taille du fichier si une erreur se produit, il renvoie FALSE et génère une erreur de niveau E_WARNING.
par exemple :

// 输出类似:somefile.txt: 1024 bytes
$filename = 'somefile.txt';
echo $filename . ': ' . filesize($filename) . ' bytes';
Copier après la connexion

2. disk_free_space()
Obtenir l'espace libre (unités d'octets) de la partition de disque où se trouve le répertoire
par exemple

// $df 包含根目录下可用的字节数
$df = disk_free_space("/");
//在 Windows 下:
disk_free_space("C:");
disk_free_space("D:");
Copier après la connexion

3. disk_total_space()
Renvoie la taille totale du disque d'un répertoire
par exemple : (comme ci-dessus, remplacez la fonction)

Un autre : si vous avez besoin de calculer la taille d'un répertoire, vous pouvez écrire une fonction récursive pour implémenter le

code

function dir_size($dir){
$dir_size = 0;
if($dh = @opendir($dir)){
while(($filename = readdir($dh)) != false){
if($filename !='.' and $filename !='..'){
     if(is_file($dir.'/'.$filename)){
$dir_size +=filesize($dir.'/'.$filename);
}else if(is_dir($dir.'/'.$filename)){
      $dir_size +=dir_size($dir.'/'.$filename);
}
}
                   }#end while
            }# end opendir
@closedir($dh);
return $dir_size;
} #end function
Copier après la connexion

5.

1. fileatime() : heure du dernier accès
2. filectime() : heure de la dernière modification (modification de toutes les données)
3. filemtime() : heure de la dernière modification (se référant uniquement à la modification du contenu)

6. Opérations d'E/S de fichier


1. fopen -- Ouvrir un fichier ou une URL


description du mode
'r. ' Ouvrez en mode lecture seule, pointez le pointeur du fichier sur l'en-tête du fichier.
'r 'Ouvrez en mode lecture-écriture et pointez le pointeur du fichier vers l'en-tête du fichier.
'w' active le mode écriture, pointe le pointeur de fichier vers l'en-tête du fichier et tronque la taille du fichier à zéro. Si le fichier n'existe pas, essayez de le créer.
'w' s'ouvre en mode lecture-écriture, pointe le pointeur de fichier vers l'en-tête du fichier et tronque la taille du fichier à zéro. Si le fichier n'existe pas, essayez de le créer.
'a' s'ouvre en mode écriture et pointe le pointeur de fichier vers la fin du fichier. Si le fichier n'existe pas, essayez de le créer.
'a' Ouvrez en mode lecture-écriture et pointez le pointeur de fichier vers la fin du fichier. Si le fichier n'existe pas, essayez de le créer.
'x' crée et s'ouvre en écriture, en pointant le pointeur du fichier vers l'en-tête du fichier. Si le fichier existe déjà, l'appel fopen() échoue et renvoie FALSE,
'x' est créé et ouvert en lecture et en écriture, pointant le pointeur du fichier vers l'en-tête du fichier. Si le fichier existe déjà, l'appel fopen() échoue et renvoie FALSE
eg:

$handle = fopen("/home/rasmus/file.txt", "r");

2. file -- Lit le fichier entier dans un tableau (cette fonction est très utile)

Identique à file_get_contents(), sauf que file() traite le fichier comme un array Tableau renvoyé. Chaque cellule du tableau correspond à une ligne correspondante dans le fichier, y compris les nouvelles lignes. En cas d'échec, file() renvoie FALSE.
par exemple :

Code

$lines = file('http://www.example.com/');
// 在数组中循环,显示 HTML 的源文件并加上行号。
foreach ($lines as $line_num => $line) {
echo "Line #<b>{$line_num}</b> : " . htmlspecialchars($line) . "<br />\n";
}
// 另一个例子将 web 页面读入字符串。参见 file_get_contents()。
$html = implode(&#39;&#39;, file (&#39;http://www.example.com/&#39;));
Copier après la connexion


3. Lire une ligne à partir du pointeur de fichier

à partir du handle. Lit une ligne à partir du fichier pointé et renvoie une chaîne d'une longueur maximale de 1 octet. S'arrête lorsqu'un caractère de nouvelle ligne (inclus dans la valeur de retour), EOF ou une longueur de 1 octet a été lu (selon la première éventualité). Si la longueur n'est pas spécifiée, la valeur par défaut est 1 Ko, soit 1 024 octets.
par exemple :

$handle = @fopen("/tmp/inputfile.txt", "r");
if ($handle) {
while (!feof($handle)) {
$buffer = fgets($handle, 4096);
echo $buffer;
}
fclose($handle);
}
Copier après la connexion

4. fgetss -- Lire une ligne à partir du pointeur de fichier et filtrer les balises HTML

est identique à fgets(). , uniquement Except fgetss tente de supprimer toutes les balises HTML et PHP du texte en cours de lecture.

Vous pouvez utiliser le troisième paramètre facultatif pour spécifier quelles balises ne doivent pas être supprimées

Autre : Opérations sur le répertoire :
1 opendir -- ouvrir le handle du répertoire. , Ouvre un handle de répertoire qui peut être utilisé dans les appels ultérieurs de closeir(), readdir() et rewinddir().
2. readdir -- Lit l'entrée à partir du handle du répertoire et renvoie le nom du fichier suivant dans le répertoire. Les noms de fichiers sont renvoyés dans l'ordre dans le système de fichiers.
par exemple :

Code

// 注意在 4.0.0-RC2 之前不存在 !== 运算符
if ($handle = opendir(&#39;/path/to/files&#39;)) {
echo "Directory handle: $handle\n";
echo "Files:\n";
  
while (false !== ($file = readdir($handle))) {
echo "$file\n";
}
   
while ($file = readdir($handle)) {
echo "$file\n";
}
     closedir($handle);
}
Copier après la connexion

3. Très utile), renvoie un tableau contenant les fichiers et répertoires du répertoire.
L'ordre de tri par défaut est l'ordre alphabétique croissant. Si le paramètre facultatif sorting_order est utilisé (défini sur 1), l'ordre de tri est l'ordre alphabétique décroissant.
par exemple :

$dir    = &#39;/tmp&#39;;
$files1 = scandir($dir);
$files2 = scandir($dir, 1);
print_r($files1);
print_r($files2);
Copier après la connexion

另外注:

七、 对文件属性的操作(操作系统环境不同,可能有所不一样,这点要注意)

1文件是否可读:

       boolis_readable ( string filename )
Copier après la connexion

如果由 filename 指定的文件或目录存在并且可读则返回 TRUE。

记住 PHP 也许只能以运行 webserver 的用户名(通常为 'nobody')来访问文件。不计入安全模式的限制。

2 文件是否可写

         bool is_writable ( string filename )
Copier après la connexion

如果文件存在并且可写则返回 TRUE。filename 参数可以是一个允许进行是否可写检查的目录名。

记住 PHP 也许只能以运行 webserver 的用户名(通常为 'nobody')来访问文件。不计入安全模式的限制

3 检查文件是否存在

    boolfile_exists ( string filename )
Copier après la connexion

      如果由 filename 指定的文件或目录存在则返回 TRUE,否则返回 FALSE


以上就是(进阶篇) PHP常用的文件操作函数的内容,更多相关内容请关注PHP中文网(www.php.cn)!


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal