PHP Fonctions de commodité


Exemple

IO directe brute

file_get_contents et file_put_contents offrent la possibilité de lire / écrire depuis / vers un fichier vers / depuis une chaîne PHP en un seul appel.

file_put_contents peut également être utilisé avec l' FILE_APPEND pour ajouter au fichier, au lieu de le tronquer et de l'écraser. Il peut être utilisé avec le LOCK_EX pour acquérir un verrou exclusif au fichier tout en procédant à l'écriture. Les indicateurs de masque de bits peuvent être joints au | Opérateur OR ou bitwise.

$path = "file.txt";
// reads contents in file.txt to $contents
$contents = file_get_contents($path);
// let's change something... for example, convert the CRLF to LF!
$contents = str_replace("\r\n", "\n", $contents);
// now write it back to file.txt, replacing the original contents
file_put_contents($path, $contents);

FILE_APPEND est pratique pour ajouter des fichiers journaux alors que LOCK_EX aide à empêcher les conditions de LOCK_EX à l'écriture de fichiers de plusieurs processus. Par exemple, pour écrire dans un fichier journal à propos de la session en cours:

file_put_contents("logins.log", "{$_SESSION["username"]} logged in", FILE_APPEND | LOCK_EX);

CSV IO

fgetcsv($file, $length, $separator)

Le fgetcsv analyse la ligne à partir de la vérification du fichier ouvert pour les champs csv. Il renvoie les champs CSV dans un tableau en cas de succès ou FALSE en cas d'échec.

Par défaut, il ne lit qu'une seule ligne du fichier CSV.

$file = fopen("contacts.csv","r");
print_r(fgetcsv($file));    
print_r(fgetcsv($file,5," "));
fclose($file); 

contacts.csv

Kai Jim, Refsnes, Stavanger, Norway
Hege, Refsnes, Stavanger, Norway

Sortie:

Array
(
    [0] => Kai Jim
    [1] => Refsnes
    [2] => Stavanger
    [3] => Norway
)
Array
(
    [0] => Hege,
)

Lire un fichier sur stdout directement

readfile copie un fichier dans le tampon de sortie. readfile () ne présentera aucun problème de mémoire, même lors de l'envoi de fichiers volumineux, seul.

$file = 'monkey.gif';

if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename="'.basename($file).'"');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    readfile($file);
    exit;
}

Ou d'un pointeur de fichier

Sinon, pour rechercher un point dans le fichier pour commencer à copier sur stdout, utilisez plutôt fpassthru . Dans l'exemple suivant, les 1024 derniers octets sont copiés dans stdout:

$fh = fopen("file.txt", "rb");
fseek($fh, -1024, SEEK_END); 
fpassthru($fh);

Lecture d'un fichier dans un tableau

file renvoie les lignes du fichier passé dans un tableau. Chaque élément du tableau correspond à une ligne dans le fichier, avec la nouvelle ligne toujours attachée.

print_r(file("test.txt"));

test.txt

Welcome to File handling
This is to test file handling

Sortie:

Array 
( 
    [0] => Welcome to File handling 
    [1] => This is to test file handling 
)