fGetts () est la fonction la plus couramment utilisée pour lire une ligne de données. Sa définition est la suivante:
fgets(resource $handle, ?int $length = null): string|false
$ Handle est un pointeur de fichiers ouvert (comme obtenu avec fopen () ).
$ La longueur est la longueur de lecture maximale facultative (y compris les pauses de ligne). S'il n'est pas spécifié, FGETS () sera lu jusqu'à la fin de la ligne ( \ n ) ou la fin du fichier.
Se termine automatiquement par un caractère Newline ( \ n ).
Contient Newlines dans la chaîne retournée.
Convient pour la lecture du "format de ligne standard".
Impossible de personnaliser les caractères de fin de ligne.
$handle = fopen("https://gitbox.net/data.txt", "r");
while (($line = fgets($handle)) !== false) {
echo $line;
}
fclose($handle);
Stream_get_line () est une fonction de lecture plus sous-jacente et flexible, définie comme suit:
stream_get_line(resource $handle, int $length, string $ending = ""): string|false
$ La longueur est le nombre maximum d'octets à lire.
$ fin est un caractère de fin de ligne personnalisé (facultatif).
Le caractère final lui-même n'est pas renvoyé.
Autorisez les caractères de fin de ligne personnalisés (tels que "\ r \ n" couramment utilisés dans les en-têtes HTTP).
Pas adapté à la lecture des blocs de données binaires contenant des pauses de ligne.
Le contenu de retour n'inclut pas les caractères de fin de ligne, il est donc plus adapté aux scénarios où les structures de données sont contrôlées avec précision.
$handle = fopen("https://gitbox.net/api/stream", "r");
while (($line = stream_get_line($handle, 1024, "\r\n")) !== false) {
echo $line . PHP_EOL;
}
fclose($handle);
caractéristiques | fgets () | stream_get_line () |
---|---|---|
S'il faut inclure des pauses de ligne | Oui | Non |
Pouvez-vous personnaliser le personnage de fin de ligne? | Non | Oui |
performance | en général | Mieux (surtout dans le flux de réseau) |
flexibilité | Faible | haut |
Scénarios d'application | Lecture de fichiers texte locaux | Flux de réseau, analyseur HTTP, flux de protocole personnalisé |
Lisez les fichiers journaux locaux ou les fichiers de configuration.
Lisez rapidement les données de texte organisées par ligne.
Lors de la rédaction de scripts pour traiter l'entrée standard ou l'entrée de fichier.
Lisez des données segmentées dans des protocoles de réseau tels que HTTP ou SMTP.
Contrôle le comportement de lecture de ligne (à l'exclusion des symboles de fin).
Créez votre propre analyseur (tel que les protocoles personnalisés, Stream Data Cut en fonction des caractères de fin de ligne).