(Fortgeschritten) Häufig verwendete Dateioperationsfunktionen in PHP

黄舟
Freigeben: 2023-03-05 12:30:02
Original
1162 Leute haben es durchsucht

Im Folgenden sind PHP-Dateioperationsfunktionen aufgeführt. Das ist natürlich nur ein Teil davon, es gibt noch viele weitere, die ich nicht aufgelistet habe.

1. Parse-Pfad:

1 Ruft den Dateinamen ab:

basename();
gibt eine Zeichenfolge mit dem vollständigen Pfad zu einer Datei zurück. Diese Funktion gibt zurück der Basisdateiname. Wenn der Dateiname mit einem Suffix endet, wird dieser Teil ebenfalls entfernt.
zB:

$path = "/home/httpd/html/index.php";
$file = basename($path,".php"); // $file is set to "index"
Nach dem Login kopieren

2 Rufen Sie den Verzeichnisteil ab:
dirname();
gibt ein Verzeichnis an, das den vollständigen Pfad zu einer Dateizeichenfolge enthält , diese Funktion gibt den Verzeichnisnamen zurück, nachdem der Dateiname entfernt wurde.
zB:

$path = "/etc/passwd";
$file = dirname($path); // $file is set to "/etc"
Nach dem Login kopieren

3 Holen Sie sich das pfadassoziative Array
pathinfo();
Rufen Sie die drei Teile eines angegebenen Pfads ab: Verzeichnisname , Basisname, Erweiterung.
zB:

$pathinfo = pathinfo("www/test/index.html");
var_dump($pathinfo);
// $path['dirname']
$path['basename']
$path['extenssion']
Nach dem Login kopieren


2. Dateityp
1.
Gibt den Dateityp zurück. Mögliche Werte sind Fifo, Char, Dir, Block, Link, File und Unknown.
zB:

echo filetype('/etc/passwd'); // file
echo filetype('/etc/');        // dir
Nach dem Login kopieren


3. Holen Sie sich eine Reihe nützlicher Informationen für eine bestimmte Datei (sehr nützlich)

1. fstat();
Bestanden Der geöffnete Dateizeiger ruft die Dateiinformationen ab.
Ruft die statistischen Informationen der Datei ab, die vom Dateizeigerhandle geöffnet wurde. Diese Funktion ähnelt der Funktion stat(), außer dass sie mit einem Zeiger auf eine geöffnete Datei und nicht mit einem Dateinamen arbeitet.
zB:

// 打开文件
$fp = fopen("/etc/passwd", "r");
// 取得统计信息
$fstat = fstat($fp);
// 关闭文件
fclose($fp);
// 只显示关联数组部分
print_r(array_slice($fstat, 13));
Nach dem Login kopieren

2. stat()
Erhalten Sie die statistischen Informationen der durch den Dateinamen angegebenen Datei (analog zu fstat())

4. Berechnen Sie die Größe
1. filesize()
Gibt die Anzahl der Bytes der Dateigröße zurück. Wenn ein Fehler auftritt, wird FALSE zurückgegeben und ein Fehler der Stufe E_WARNING generiert.
zB:

// 输出类似:somefile.txt: 1024 bytes
$filename = 'somefile.txt';
echo $filename . ': ' . filesize($filename) . ' bytes';
Nach dem Login kopieren


2. disk_free_space()
Ermitteln Sie den freien Speicherplatz (Byteeinheiten) der Festplattenpartition, auf der sich das Verzeichnis befindet
zB

// $df 包含根目录下可用的字节数
$df = disk_free_space("/");
//在 Windows 下:
disk_free_space("C:");
disk_free_space("D:");
Nach dem Login kopieren


3. disk_total_space()
Gibt die gesamte Festplattengröße eines Verzeichnisses zurück
z. B.: (wie oben, ersetzen Sie die Funktion)

Eine andere: Wenn Sie eine Verzeichnisgröße berechnen müssen, können Sie eine rekursive Funktion schreiben, um

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
Nach dem Login kopieren

5 zu implementieren
1. fileatime(): letzte Zugriffszeit
2. filectime(): letzte Änderungszeit (Änderung beliebiger Daten)
3. filemtime(): letzte Änderungszeit (bezieht sich nur auf Inhaltsänderungen)

6. Datei-E/A-Operationen

1. Eine Datei oder URL öffnen

Modusbeschreibung
'r ' Im schreibgeschützten Modus öffnen, den Dateizeiger auf den Dateiheader richten.
'r+' Im Lese-/Schreibmodus öffnen und den Dateizeiger auf den Dateikopf verweisen.
'w' aktiviert den Schreibmodus, zeigt den Dateizeiger auf den Dateiheader und kürzt die Dateigröße auf Null. Wenn die Datei nicht vorhanden ist, versuchen Sie, sie zu erstellen.
'w+' Öffnen Sie im Lese-/Schreibmodus, zeigen Sie mit dem Dateizeiger auf den Dateiheader und kürzen Sie die Dateigröße auf Null. Wenn die Datei nicht vorhanden ist, versuchen Sie, sie zu erstellen.
'a' öffnet sich im Schreibmodus und zeigt den Dateizeiger auf das Ende der Datei. Wenn die Datei nicht vorhanden ist, versuchen Sie, sie zu erstellen.
'a+' Öffnen Sie im Lese-/Schreibmodus und zeigen Sie mit dem Dateizeiger auf das Ende der Datei. Wenn die Datei nicht vorhanden ist, versuchen Sie, sie zu erstellen.
'x' erstellt und öffnet zum Schreiben, wobei der Dateizeiger auf den Dateikopf zeigt. Wenn die Datei bereits vorhanden ist, schlägt der Aufruf von fopen() fehl und gibt FALSE zurück.
'x+' wird erstellt und zum Lesen und Schreiben geöffnet, wobei der Dateizeiger auf den Dateikopf zeigt. Wenn die Datei bereits existiert, schlägt der Aufruf von fopen() fehl und gibt FALSE zurück
eg:

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

2. Datei – Liest die gesamte Datei in ein Array (diese Funktion ist sehr nützlich)
Gleich wie file_get_contents(), außer dass file() die Datei als ein Array behandelt array Array zurückgegeben. Jede Zelle im Array ist eine entsprechende Zeile in der Datei, einschließlich Zeilenumbrüchen. Bei einem Fehler gibt file() FALSE zurück.
zB:

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;));
Nach dem Login kopieren


3. fgets – Liest eine Zeile aus dem Dateizeiger
vom Handle Liest eine Zeile aus der Datei, auf die verwiesen wird, und gibt eine Zeichenfolge mit einer Länge von bis zu 1 Byte zurück. Stoppt, wenn ein Zeilenumbruchzeichen (im Rückgabewert enthalten), ein EOF oder eine Länge von 1 Byte gelesen wurde (je nachdem, was zuerst eintritt). Wenn die Länge nicht angegeben ist, beträgt sie standardmäßig 1 KB oder 1024 Byte.
zB:

$handle = @fopen("/tmp/inputfile.txt", "r");
if ($handle) {
while (!feof($handle)) {
$buffer = fgets($handle, 4096);
echo $buffer;
}
fclose($handle);
}
Nach dem Login kopieren

4. fgetss – Eine Zeile aus dem Dateizeiger lesen und HTML-Tags herausfiltern
ist dasselbe wie fgets() , außer fgetss versucht nur, jegliches HTML- und PHP-Markup aus dem gelesenen Text zu entfernen.

Mit dem optionalen dritten Parameter können Sie angeben, welche Tags nicht entfernt werden sollen


Andere: Vorgänge im Verzeichnis:
1. Öffnen Sie das Verzeichnishandle , Öffnet ein Verzeichnishandle, das in nachfolgenden Aufrufen von closeir(), readdir() und rewinddir() verwendet werden kann.
2. readdir – Liest den Eintrag aus dem Verzeichnishandle und gibt den Dateinamen der nächsten Datei im Verzeichnis zurück. Dateinamen werden der Reihe nach im Dateisystem zurückgegeben.
zB:

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);
}
Nach dem Login kopieren


3. Dateien und Verzeichnisse im angegebenen Pfad auflisten ( Sehr nützlich), gibt ein Array zurück, das die Dateien und Verzeichnisse im Verzeichnis enthält.
Die Standardsortierreihenfolge ist aufsteigend alphabetisch. Wenn der optionale Parameter sorting_order verwendet wird (auf 1 gesetzt), erfolgt die Sortierung in absteigender alphabetischer Reihenfolge.
zB:

$dir    = &#39;/tmp&#39;;
$files1 = scandir($dir);
$files2 = scandir($dir, 1);
print_r($files1);
print_r($files2);
Nach dem Login kopieren

另外注:

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

1文件是否可读:

       boolis_readable ( string filename )
Nach dem Login kopieren

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

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

2 文件是否可写

         bool is_writable ( string filename )
Nach dem Login kopieren

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

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

3 检查文件是否存在

    boolfile_exists ( string filename )
Nach dem Login kopieren

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


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


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!