Tutoriel de développement PHP de base : opérations sur les fichiers PHP

1. Système de fichiers

1. Nous ferons un clic droit sur la souris pour supprimer le fichier, contrôle+c (ou clic droit) pour copier. et collez le fichier, puis créez un nouveau fichier. Pour certains fichiers, vérifiez si le fichier est en lecture seule.

2. Ce serait formidable si ces opérations effectuées sur l'ordinateur pouvaient être effectuées dans le code.

3. Parce que, s'il y a ces opérations. On peut faire beaucoup de choses :

  • Puis-je écrire et modifier le fichier de configuration ?

  • Est-il possible de détecter les autorisations de fichiers lors de l'installation de PHP ?

  • Est-il possible de générer des fichiers HTML et de nombreuses autres opérations

  • ..... Les opérations sur les fichiers sont utilisées dans trop d'autres endroits.

4. L'apprentissage du traitement de fichiers consiste essentiellement à apprendre les fonctions de traitement de fichiers. Combinez-le avec le code que vous avez écrit auparavant pour améliorer vos capacités de traitement métier.


2. Lire le fichier

1.readfile lit le fichier

Alors comment lire un fichier ? Apprenons d'abord une fonction.

int readfile (string $filename)

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

Dans le code ci-dessous, le fichier est lu tant que le nom du fichier ou le chemin du fichier spécifié est transmis.

<?php
    //linux类的读了方式
    readfile("/home/paul/test.txt");
    //windows类的读取方式
    readfile("c:\boot.ini");
?>

Remarque : la barre oblique Windows dans le code ci-dessus est une barre oblique et certains caractères peuvent être échappés. Par conséquent, lorsque nous écrivons, nous écrivons deux barres obliques.

2.file_get_contents ouvre le fichier

Ce qui précède est une sortie directe après simplement l'ouverture du fichier. Y a-t-il une opération qui peut être affectée à une variable. après avoir ouvert le 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 :

string file_get_contents (string filename)

<🎜. >Fonction : Passer Entrez un fichier ou un chemin de fichier, ouvrez le fichier et renvoyez le contenu du fichier. Le contenu du fichier est une chaîne.

<?php
    $filename = 'NoAlike.txt';
    $filestring = file_get_contents($filename);
    echo $filestring;
?>

Le code ci-dessus ouvre un fichier et affiche le contenu du fichier.

Développons le code en fonction des connaissances précédentes. Utilisez vos connaissances antérieures.

<?php
    //假设我们有一个多行的文件叫NoAlike.txt,没有的话你可以新建一个这个文件
     $filename = 'NoAlike.txt';
    //打开这个文件,将文件内容赋值给$filestring
    $filestring = file_get_contents($filename);
    //因为每一行有一个回车即\n,我用\n来把这个字符串切割成数组
    $filearray = explode("\n", $filestring);
    //把切割成的数组,下标赋值给$key,值赋值给$val,每次循环将$key加1。
    while (list($key, $val) = each($filearray)) {
        ++$key;
        $val = trim($val);
        //用的单引号,单引号不解释变量进行了拼接而已
        print 'Line' . $key .':'.  $val.'<br />';
    }
?>

Ci-dessus, nous avons combiné les connaissances que nous avons apprises auparavant.

3. Les opérations fopen, fread et fclose lisent les fichiers

La méthode file_get_contents ci-dessus pour ouvrir des fichiers est simple et grossière. La ressource suivante

  • fopen (chaîne $nom de fichier, mode chaîne)

  • chaîne fread (ressource $opération ressource, longueur de lecture int)

  • bool fclose ( ressource $ opération ressource)

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

  • Ouvrir les ressources

  • Utiliser les fonctions associées pour fonctionner

  • Fermer les ressources

Fonction fopen La fonction fopen est d'ouvrir un fichier. Il y a deux paramètres principaux :

l Chemin pour ouvrir le fichier

l Ouvrir Le type de retour du mode

du fichier est un type de ressource C'est la première fois que nous rencontrons le type de ressource mentionné dans le type de base précédent.
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.

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

Après avoir compris les fonctions, les deux dernières fonctions sont relativement simples. Quels sont les modes de la fonction fopen ? Les modes de fopen sont les suivants Parlons des modes de fopen :


38.png

<. 🎜>

Ensuite, nous apprendrons uniquement le mode r. Dans la prochaine leçon, nous parlerons des autres modes lors de l'écriture.


3. Il faut d'abord savoir lire des fichiers avant de bien maîtriser l'écriture de fichiers.

1. Ouvrez le fichier

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

2. Lisez le fichier

<?php
    $fp = fopen('NoAlike.txt', "r");
 
    //打开一个文件类型后,读取长度
    $contents = fread($fp, 1024);
?>

<🎜. > 3. Fermez le fichier

<?php
    $fp = fopen($filename, 'r');
    $contents = fread($fp, 1024);
    fclose($fp);
    echo $contents;
?>
Autres notes :

39.png


Exemple d'utilisation :

<?php
$fp = fopen($filename, 'ab');
$contents = fwrite($fp, '可爱的很\n哟');
fclose($fp);
echo $contents;
?>

Explication :

L'expérience ne peut pas permettre à l'œil nu de voir l'effet de cette expérience. N'oubliez pas cette fonctionnalité.
Windows fournit une balise de conversion de texte (« t ») pour convertir de manière transparente n en rn.

Contrairement à cela, vous pouvez également utiliser 'b' pour forcer le mode binaire afin que les données ne soient pas converties. Pour utiliser ces indicateurs, utilisez « b » ou « t » comme dernier caractère de l'argument mode.



4. Créer et modifier le contenu du fichier

1.file_put_contents est écrit dans le fichier

Apprenons d'abord la première façon d'écrire des fichiers :

int file_put_contents (string $file path, string $write data])

Fonction : Écrivez une chaîne dans le fichier spécifié et créez le fichier s'il n'existe pas. Ce qui est renvoyé est la longueur des octets écrits

<?php
    $data = "我是一个兵,来自老百姓";
 
    $numbytes = file_put_contents('binggege.txt', $data);
 
    if($numbytes){
 
        echo '写入成功,我们读取看看结果试试:';
 
        echo file_get_contents('binggege.txt');
 
    }else{
        echo '写入失败或者没有权限,注意检查';
    }
?>
Nous avons constaté que l'écriture de fichiers est assez simple. Selon le format de cette fonction, spécifiez le fichier et écrivez les données de chaîne.

2.fwrite coopère avec fopen pour effectuer des opérations d'écriture

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

Remarque : la fonction d'alias de fwrite est fputs

Nous avons essayé le mode r dans le dernier cours, qui n'était utilisé que lors de la lecture. Ensuite, nous utilisons fwrite plus w dans fopen pour écrire des fichiers en mode écriture.

Jetons un coup d'œil aux fonctionnalités :

Ouvrez en mode écriture, pointez le pointeur du fichier sur l'en-tête du fichier et tronquez la taille du fichier à zéro. Si le fichier n'existe pas, tente de le créer.

Remarque : dans l'expérience suivante, 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
    $filename = 'test.txt';
    $fp= fopen($filename, "w");
    $len = fwrite($fp, '我是一只来自南方的狼,一直在寻找心中的花姑娘');
    fclose($fp);
    print $len .'字节被写入了\n";
?>

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

Comparons ensuite les différences entre les modes suivants :

40.png

Prouvons à travers des expériences :

<?php
    $filename = 'test.txt';
    $fp= fopen($filename, "r+");
    $len = fwrite($fp, '我是一只来自南方的狼,一直在寻找心中的花姑娘');
    fclose($fp);
    print $len .'字节被写入了\n';
?>

Vous pouvez supprimer le signe + après r lors de l'expérimentation.

Grâce à des expériences, nous avons constaté qu'en utilisant le mode r, les données peuvent être écrites lorsque le fichier est enregistré. Si seul r est utilisé, l'écriture échoue.

3. La différence entre un mode et le mode w

Le même code est ci-dessous, on le change en mode.

<?php
    $filename = 'test.txt';
    $fp= fopen($filename, "a");
    $len = fwrite($fp,'读大学迷茫了,PHP学院PHP给你希望');
    echo  $len .'字节被写入了\n';
?>

Ouvrez la page Web et exécutez ce code, vous trouverez : chaque fois que vous actualisez, il y aura un paragraphe supplémentaire dans le fichier

Si vous êtes confus à l'université, PHP Academy PHP vous donne de l'espoir.

Résumé :

41.png

La différence entre le mode 4.x et le mode w

Expérimentons avec ce code encore une fois, passez au >Si vous remplacez $filename par un autre nom de fichier, tout ira bien. Cependant, lorsque je l'ai actualisé à nouveau, une erreur a été signalée

x+ est un mode x amélioré. Peut également être utilisé lors de la lecture.

5. Créer des fichiers temporaires


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-le après avoir terminé l'écriture

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

. 🎜>

Par exemple : je dois transférer le contenu du fichier de A 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 :

resource tmpfile ( )

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

<?php
    $filename = 'test.txt';
    $fp= fopen($filename, "x");
    $len = fwrite($fp,'读大学迷茫了,PHP学院PHP给你希望');
    echo  $len .'字节被写入了\n';
?>

6. Déplacer, copier et supprimer des fichiers

1. Renommer

bool renommer ( $ancien nom, $nouveau nom);

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

<?php
    //创建了一个临时文件
    $handle = tmpfile();
 
    //向里面写入了数据
    $numbytes = fwrite($handle, '写入临时文件');
 
    //关闭临时文件,文件即被删除
    fclose($handle);
 
    echo  '向临时文件中写入了'.$numbytes . '个字节';
?>

Nous ouvrons le répertoire et nous pouvons voir l'effet Vous constaterez que le fichier spécifié est copié dans le chemin cible.

2. Copier des fichiers

La copie de fichiers équivaut à la technologie de clonage, cloner une chose originale dans une nouvelle chose. Les deux se ressemblent exactement.

bool copy (fichier source, fichier cible)

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

Jouons avec à travers des expériences et du code :

<?php
    //旧文件名
    $filename = 'test.txt';
 
    //新文件名
    $filename2 = $filename . '.old';
 
    //复制文件
    rename($filename, $filename2);
?>

Résumé :
Vous constaterez qu'il y a un fichier supplémentaire grâce à l'exemple ci-dessus.

3. Supprimer des fichiers

Supprimer un fichier signifie supprimer un fichier dans le chemin spécifié, mais cette suppression est une suppression directe. Si vous utilisez un ordinateur Windows, vous ne pouvez pas voir ce fichier dans la corbeille.

Vous constaterez seulement que ce fichier a disparu.

bool dissocier (fichier avec chemin spécifié)

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

Détecter la fonction d'attribut de fichier

Certains étudiants sont particulièrement curieux de savoir où la détection des attributs de fichier est utilisée. La détection des attributs de fichier peut être utilisée à trop d'endroits.

Donnons un exemple :

1. Lorsque nous installons le logiciel, vous constaterez que si le fichier existe, il passera à un autre endroit.

2. Si certains fichiers n'ont pas d'autorisation en écriture pendant le processus d'installation, l'installation ne sera pas autorisée.

Prenons une capture d'écran du processus d'installation de discuz, un logiciel très célèbre en Chine :

42.png

L'exemple ci-dessus est une utilisation typique de la détection de fichiers.

Apprenons le lot de fonctions suivant. Ensuite, apprenons à travers un exemple.

bool file_exists ($spécifiez le nom du fichier ou le chemin du fichier)
Fonction : si le fichier existe.

bool is_readable ($spécifiez le nom du fichier ou le chemin du fichier)
Fonction : indique si le fichier est lisible

bool is_writeable ($specify nom du fichier ou chemin du fichier)
Fonction : si le fichier est accessible en écriture

bool is_executable ($spécifie le nom du fichier ou le chemin du fichier)
Fonction : si le fichier est exécutable

bool is_file ($spécifie le nom du fichier ou le chemin du fichier)
Fonction : s'il s'agit d'un fichier

bool is_dir ($ précise le nom du fichier ou le chemin du fichier)
Fonction : Qu'il s'agisse d'un répertoire

void clearstatcache (void)
Fonction : Effacer le cache d'état du fichier

La fonction ci-dessus peut être vue d'un coup d'œil. Compris. Quant à l’expérience, écrivons l’exemple que nous avons donné au début.

Parlons du premier exemple, le verrouillage de fichiers. S'il a été installé, si le verrou d'installation existe, il vous indiquera qu'il a été installé, sinon l'installation se poursuivra.

Nous supposons que l'URL de l'interface d'installation est : install.php et que le fichier de verrouillage installé est install.lock. Nous pouvons détecter si le fichier install.lock existe.

<?php
    $filename = 'test.txt';
 
    if (unlink($filename)) {
        echo  "删除文件成功 $filename!\n";
    } else {
        echo "删除 $filename 失败!\n";
    }
?>

Faisons une expérience de détection d'installation de fichier pour détecter si le fichier ou le répertoire dispose d'autorisations d'écriture ou de lecture. Dans le cas contraire, l'installation ne pourra pas être effectuée.

L'idée de​​traiter ce problème est la suivante :

1. Définir un lot de tableaux qui doivent détecter les autorisations

2. est un dossier ou un fichier

3. Créez une variable de bit définie si la variable de bit définie est fausse, la prochaine étape de l'installation ne sera pas affichée

<?php
if(file_exists('install.lock')){
    echo '已安装,请不要再次进行安装';
    exit;
}
?>

Grâce à l'exemple ci-dessus, nous l'ai fait. Implémentez la détection d'installation pendant le processus d'installation d'un certain logiciel PHP.

C'est la réalisation de notre idée ci-dessus.


8. Fonctions et constantes communes pour les fichiers

1. La constante suivante est la plus couramment utilisée. Est une constante qui est le délimiteur du répertoire de fichiers.

Jetons un coup d'œil au format :

43.pngLe format du chemin de Windows est d:xxxxxx Remarque : Windows prend en charge d:/xxx/xxx

linux Le format du chemin est /home/xxx/xxx Remarque : Si homexxxxxx est incorrect sous Linux

, lorsque vous activez l'échappement et autres, d:xxxxxx est le même si les caractères d'échappement sont utilisés ensemble. Lors du jugement, il y en a deux. S'il y en a, convertissez-les en un seul, puis remplacez / pour diviser le chemin, afin que les chemins sous Linux ou Windows puissent rester unifiés.

Nous utiliserons une constante :

DIRECTORY_SEPARATOR


Écrivons un petit exemple pour définir le chemin du fichier actuel :

Puisque FILE est un préréglage de constantes PHP sont définis, il n'y a donc aucun moyen de les modifier. Si nécessaire, FILE peut également s'adapter au système d'exploitation.

Ensuite, n'utilisez pas FILE, vous pouvez utiliser des constantes personnalisées et traiter FILE, comme suit :

<?php
 
//可以定义一批文件是否存在
$files = [
    'config.php',
    'img/',
    'uploads/',
];
 
//定义标志位变量
$flag = true;
foreach($files as  $v){
    echo $v;
 
    //判断是文件还是文件夹
 
    if(is_file($v)){
        echo '是一个文件    ';
    }else if(is_dir($v)){
        echo '是一个文件夹    ';
    }
 
    if(is_readable($v)){
        echo ' 可读';
    }else{
         echo '<font color="red">不可读</font>';
    }
 
    if(is_writeable($v)){
        echo '可写';
    }else{
        echo '<font color="red">不可写</font>';
    }
 
    echo '<br />';
}
 
if($flag){
    echo '<a href="step1">下一步</a>';
 
}else{
     echo '不能进行安装';
}
?>

2. Fonction d'opération du pointeur de fichier

rewind (ressource handle)

Fonction : renvoie le pointeur au début

fseek (ressource handle, int offset [, int from_where] )

Fonction : Déplacez le pointeur de fichier vers l'arrière du caractère spécifié
Dans la lecture précédente, nous avons constaté que fread lit les données de la longueur spécifiée. Lisez le contenu de la longueur spécifiée la prochaine fois que vous le lisez, commencez à partir de la position d'origine, puis lisez à rebours.

44.pngComme le montre l'image ci-dessus, on peut imaginer :

1. Lors de la première ouverture du fichier, l'icône rouge est lue

<. 🎜>2 .Le fichier fausse couleur est lu de A à C

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

Abcdeefghijklk<🎜. >
  • Opqrst

  • Uvwxyz

  • 12345678

Nous pouvons commencer une expérience.

<?php
$_current_file = str_replace(array('/', '\'), DIRECTORY_SEPARATOR, __FILE__);
define('__CUR_FILE__', $_current_file);
echo __CUR_FILE__;
?>

Dans l'exemple ci-dessus, vous constaterez que fseek déplace autant d'octets que la longueur spécifiée. Et le rembobinage revient à chaque fois au début du fichier.

Comment aller au bout ? Nous pouvons compter le nombre d'octets. Déplacez-vous directement vers l’arrière pendant la recherche.

Parlons des octets de statistiques sur la taille des fichiers.

3.filesize détecte la taille du fichier

<?php
$fp = fopen('output.txt', 'r+');
//读取10个字符
echo fread($fp,10);
 
//指针设置回到开始处
rewind($handle);
//再读取10次看看输出的是什么
echo fread($fp,10);
 
//文件指针向后移动10个字符
echo fseek($fp,10);
 
//再看看文件中输出的是什么
echo fread($fp,10);
 
fclose($handle);
?>

4 Autres fonctions pour exploiter les fichiers

En fait, il existe d'autres fonctions pour. d'exploitation des fichiers, lisez Obtenir le fichier

45.png

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

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

abcdeefghijklk
opqrst
uvwxyz
12345678

<?php
$filename = 'demo.txt';
echo $filename . '文件大小为: ' . filesize($filename) . ' bytes';
?>

fgets ouvre une ligne à la fois :

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

Avec le code ci-dessus, vous constaterez que chaque lecture ouvre une ligne à la fois. Le retour final de lecture est faux.

Regardons ensuite la fonction d'interception de fichiers :

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

Dans l'exemple ci-dessus, nous avons constaté que le contenu peut être affiché tant qu'il est intercepté.

5. Fonction heure du fichier

46.png

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



9. Mécanisme de verrouillage des fichiers

Le mécanisme de verrouillage des fichiers n'a généralement aucun effet lorsqu'un seul fichier est ouvert. Cette partie de l'apprentissage est un peu abstraite.

Vous ne réfléchissez pas à la manière d'y parvenir ?

Pourquoi ne voyez-vous pas l’effet ?
Réponse : Parce que l'ordinateur fonctionne si vite, essentiellement au niveau de la milliseconde. Cette expérience n’a donc aucun effet.

Dans ce chapitre, comprenez simplement les concepts de base du verrouillage de fichiers et familiarisez-vous avec la fonction de verrouillage de fichiers et le mécanisme de verrouillage.

Utilisation du verrouillage de fichier :

Si une personne écrit un fichier, une autre personne ouvre également le fichier et écrit le fichier.
Dans ce cas, s'il y a une certaine probabilité de collision, je ne sais pas quelle opération prévaudra.
Par conséquent, nous introduisons actuellement le mécanisme de verrouillage.
Si l'utilisateur A écrit ou lit ce fichier, ajoutez le fichier au partage. Je peux le lire, et les autres aussi.
Cependant, si tel est le cas. J'utilise le verrouillage exclusif. Ce fichier m'appartient, n'y touchez pas à moins que je libère le verrou du fichier.

Remarque : qu'un verrou de fichier soit ajouté ou non, veillez à le libérer.

Jetons un coup d'oeil à cette fonction :

bool flock ( resource $handle , int $operation)

Fonction : Verrouillage léger des fichiers de consultation

Jetons un coup d'œil au type de verrou :

47.png

Ajoutons un verrou exclusif à demo.txt et procédons à l'écriture opération.

<?php
$filename = 'demo.txt';
if (file_exists($filename)) {
    echo "$filename文件的上次访问时间是: " . date("Y-m-d H:i:s", fileatime($filename));
    echo "$filename文件的创建时间是: " . date("Y-m-d H:i:s", filectime($filename));
     echo "$filename文件的修改时间是: " . date("Y-m-d H:i:s", filemtime($filename));
}
?>

Description :

Dans l'exemple ci-dessus, afin d'écrire dans le fichier, j'ai ajouté un verrou exclusif au fichier.

Si mon opération est terminée, une fois l'écriture terminée, le verrou exclusif est libéré.

Si vous lisez un fichier, vous pouvez ajouter un verrou partagé selon la même idée de traitement.


10. Fonction de traitement des répertoires

Avant de traiter tous les fichiers, alors comment gérer les répertoires et 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 :

Lors de la lecture d'un certain chemin, déterminez s'il s'agit d'un dossier

S'il s'agit d'un dossier, ouvrez le dossier spécifié et renvoie le fichier Variables de ressources du répertoire

Utilisez readdir pour lire les fichiers dans le répertoire une fois, et le pointeur du répertoire est décalé une fois vers l'arrière

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

Fermez le répertoire des fichiers

Apprenons une liste des fonctions couramment utilisées :

48.png

<?php
$fp = fopen("demo.txt", "r+");
 // 进行排它型锁定
if (flock($fp, LOCK_EX)) {
    fwrite($fp, "文件这个时候被我独占了哟\n");
   // 释放锁定
    flock($fp, LOCK_UN);    
} else {
    echo "锁失败,可能有人在操作,这个时候不能将文件上锁";
}
fclose($fp);
?>

Puisqu'il est lu une fois et reculer une fois, pouvons-nous

<?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 />';
       //读取到最后返回false
       //关闭文件夹资源
        closedir($dh);
    }
}
?>


Paramètres d'autorisation de fichier<🎜. >

Paramètres d'autorisation de fichier Les fonctions sont couramment utilisées dans les logiciels de niveau de gestion système. Par exemple : un certain fichier ne peut pas être visualisé par le groupe invité (utilisateurs invités).

Dans la gestion d'entreprise, certains utilisateurs ou certains fichiers utilisateur peuvent uniquement être lus et non modifiés. Ce sont des fonctions très couramment utilisées.

Remarque :

Ce chapitre est un chapitre de compréhension. Si vous n'avez jamais appris Linux auparavant et que cela sera un peu difficile, vous pouvez sauter ce chapitre et en apprendre davantage.

est moins utile dans les processus de production réels.

Principalement destiné aux étudiants qui disposent d'un système de connaissances complet sous Linux et peuvent se concentrer sur l'apprentissage.

Certaines fonctions sous Windows ne peuvent pas être implémentées.

49.png

L'utilisation de la fonction ci-dessus est la même que l'utilisation de l'opération d'autorisation Linux.

C'est relativement facile pour les étudiants qui ont appris Linux. Ceux qui ne l’ont pas appris trouveront cela un peu difficile.

Je vais juste vous donner un exemple pour voir comment modifier les permissions :

chmod modifie principalement les permissions des fichiers

<?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);
    }
}
?>



12. Fonction de chemin de fichier

1. 🎜>Nous rencontrons souvent la situation du traitement des chemins de fichiers.

Par exemple :

Le suffixe du fichier doit être supprimé

Le chemin doit supprimer le nom mais pas le répertoire

Uniquement le répertoire le chemin dans le nom du chemin doit être supprimé

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

Ou même former une URL vous-même

... ....


Il est nécessaire dans de nombreux endroits Fonctions de la 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 :

50.png

2.Pathinfo<🎜. >

array pathinfo (string $path)Fonction : Passer le chemin du fichier et renvoyer les différents composants du fichier

Nous utilisons des exemples spécifiques Jetez un œil :

<?php
//修改linux  系统/var/wwwroot/某文件权限为755
chmod("/var/wwwroot/index.html", 755);  
chmod("/var/wwwroot/index.html", "u+rwx,go+rx");
chmod("/somedir/somefile", 0755);
?>

Le résultat est le suivant :

Nom du répertoire du fichier : d:/www

Nom complet du fichier : lib.inc.php
Extension du fichier : php
Aucun fichier nom contenant l'extension : lib.inc

3.Basename

string basename ( string $path[, string $suffix ]) fonction : Pass dans le chemin et renvoie 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é.

<?php
$path_parts = pathinfo('d:/www/index.inc.php');
 
echo '文件目录名:'.$path_parts['dirname']."<br />";
echo '文件全名:'.$path_parts['basename']."<br />";
echo '文件扩展名:'.$path_parts['extension']."<br />";
echo '不包含扩展的文件名:'.$path_parts['filename']."<br />";
?>

Conclusion : vous pouvez l'exécuter pour voir si la partie répertoire du fichier est renvoyée.

5.parse_url

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

<?php 
echo "1: ".basename("d:/www/index.d", ".d").PHP_EOL;
echo "2: ".basename("d:/www/index.php").PHP_EOL;
echo "3: ".basename("d:/www/passwd").PHP_EOL; 
?>
4.Dirname
dirname(string $路径) 功能:返回文件路径的文件目录部份
<?php
dirname(__FILE__);
?>

Le résultat est le suivant :

array(8) {

["scheme"]=> string(4) "http"
["host"]=> 8 ) "nom d'hôte"
["port"]=> int(9090)
["utilisateur"]=> string(8) "nom d'utilisateur"
["pass"]=> ( 8) "mot de passe"
["chemin"]=> string(5) "/chemin"
["query"]=> fragment "]=> string(6) "anchor"
}

6.http_build_query

string http_build_query (données $ mixtes à traiter )

Fonction : Générer une chaîne de requête dans l'url

<?php
$url = 'http://username:password@hostname:9090/path?arg=value#anchor';
var_dump(parse_url($url));
?>
Le résultat est le suivant :

username=liwenkai&area=hubei

http_build_url()

Fonction : Générer une url


Remarque :

La constante PHP_EOL est équivalente à echo "rn" sur la plateforme Windows
est équivalente à echo " ; n" sur la plateforme unixlinux ;
Équivalent à echo "r" sur la plateforme mac;




13. Livre d'or texte Nous avons parlé de tant de systèmes de traitement de fichiers, mais nous ne pouvons même pas écrire la chose la plus élémentaire.

À partir de cette section, vous constaterez que vous pouvez écrire de plus en plus de choses.

Regardons ensuite l'effet de démonstration :

L'interface du formulaire pour écrire le contenu du message dans l'interface suivante :


L'interface d'affichage après avoir quitté le message :

51.pngJetons un coup d'œil à la structure du fichier :

index.php --- Afficher la zone de saisie et le contenu du message

write.php ---Écrire les données dans message.txtmessage.txt ---Enregistrer le contenu du chat

fichier index.php

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

Après avoir lu le contenu qui vient d'être affiché, nous savons que lorsque le fichier est stocké :

La section est divisée en sections

Le contenu et l'utilisateur sont séparés avant d'utiliser un symbole spécial

Écrivons le code write.php pour écrire des messages dans le fichier :

<?Php
//设置时区
date_default_timezone_set('PRC');
 
//读了内容
@$string = file_get_contents('message.txt');
 
//如果$string 不为空的时候执行,也就是message.txt中有留言数据
if (!empty($string)) {
 
    //每一段留言有一个分格符,但是最后多出了一个&^。因此,我们要将&^删掉
    $string = rtrim($string, '&^');
 
    //以&^切成数组
    $arr = explode('&^', $string);
 
    //将留言内容读取
    foreach ($arr as $value) {
 
        //将用户名和内容分开
        list($username, $content, $time) = explode('$#', $value);
 
        echo '用户名为<font color="gree">' . $username . '</font>内容为<font color="red">' . $content . '</font>时间为' . date('Y-m-d H:i:s', $time);
        echo '<hr />';
    }
 
}
 
?>
 
 
<h1>基于文件的留言本演示</h1>
<form action="write.php" method="post">
    用户名:<input type="text" name="username" /><br />
 
    留言内容:<textarea  name="content"></textarea><br />
 
    <input type="submit" value="提交" />
 
</form>
Formation continue
||
<?php //linux类的读了方式 readfile("/home/paul/test.txt"); //windows类的读取方式 readfile("c:\\boot.ini"); ?>
soumettreRéinitialiser le code
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!