In PHP ist Stream ein Schlüsselkonzept für die Handhabung von Dateien, Netzwerkverbindungen oder anderen Eingabe-/Ausgabesressourcen. Stream -Filter sind einige funktionale Module, die an den Stream angehängt sind und die Daten im Stream verarbeiten und die Daten ändern können, bevor sie gelesen oder geschrieben werden. Stream_get_filters und Stream_filter_Append sind zwei wichtige Funktionen in PHP, die Stream -Filter verarbeiten.
In diesem Artikel wird detailliert erläutert, wie diese beiden Funktionen verwendet werden und wie sie zusammen verwendet werden können, um die Filterung von Streaming -Daten zu implementieren.
Die Funktion Stream_get_filters wird verwendet, um alle derzeit verfügbaren Stream -Filter zu erhalten. Stream -Filter sind vordefinierte Funktionen, die das Verhalten eines Stream- oder Prozessdaten im Stream ändern können. Sie können die registrierten Stream -Filter im System anzeigen, indem Sie Stream_get_filter aufrufen.
$filters = stream_get_filters();
print_r($filters);
Dieser Code gibt alle verfügbaren Stream -Filter aus. Sie können beispielsweise Filter wie String.toUpper , Convert.Base64-Codode usw. sehen. Jeder Filter entspricht einer bestimmten Datenumwandlung oder -operation.
Die Funktion Stream_filter_Append wird verwendet, um einen Filter an einen Stream anzuhängen. Im Gegensatz zu Stream_filter_Prepend findet Stream_filter_Append am Ende des Streams ein Filter an, sodass die Daten vor dem zurückgegebenen Stream -Daten verarbeitet werden. Sie können Stream_filter_Append verwenden, um einen benutzerdefinierten Stream-Filter anzuhängen oder den systembereiteten Filter zu verwenden.
$fp = fopen("php://temp", "r+");
stream_filter_append($fp, "string.toupper");
fwrite($fp, "hello world\n");
rewind($fp);
echo fread($fp, 1024); // Ausgabe: HELLO WORLD
fclose($fp);
Im obigen Beispiel verwenden wir Stream_filter_Append , um den Filter für String.toupper an den Dateistrom anzuhängen, damit der geschriebene Inhalt automatisch in Großbuchstaben konvertiert wird.
Durch die Kombination dieser beiden Funktionen können Sie sich zunächst die verfügbaren Filter ansehen und einen geeigneten Filter auswählen, der für Ihren Stream angewendet werden kann. Zuerst können Sie mit Stream_get_filter alle Filter anzeigen und dann einen Filter über Stream_filter_Append an den Stream anhängen, wodurch die Art und Weise geändert wird, wie die Stream -Daten verarbeitet werden.
Angenommen, wir möchten den Inhalt einer Datei lesen und alle Text in Großbuchstaben umwandeln. Wir werden Stream_Get_filter verwenden, um verfügbare Filter anzuzeigen, einen geeigneten Filter auszuwählen und dann Stream_filter_Append zu filtern, um den Dateistrom zu filtern.
// Stellen Sie die verfügbaren Filter an
$filters = stream_get_filters();
print_r($filters);
// Wählen Sie den richtigen Filter(string.toupper)und an den Strom angeschlossen
$fp = fopen("sample.txt", "r+");
stream_filter_append($fp, "string.toupper");
// Dateiinhalte schreiben und lesen
fwrite($fp, "hello world\n");
rewind($fp);
echo fread($fp, 1024); // Ausgabe: HELLO WORLD
fclose($fp);
Zusätzlich zu den systembereiteten Filtern können Benutzer auch benutzerdefinierte Stream-Filter erstellen. Um benutzerdefinierte Filter zu verwenden, können Sie diese Filter verwenden, um diese Filter anzuhängen. Hier ist ein einfaches benutzerdefiniertes Filterbeispiel, das zeigt, wie alle Kleinbuchstaben im Text in Großbuchstaben umwandeln.
// Erstellen Sie einen benutzerdefinierten Filter
class UppercaseFilter extends php_user_filter {
public function filter($in, $out) {
while ($bucket = stream_bucket_make_writeable($in)) {
// In Kapital konvertieren
$bucket->data = strtoupper($bucket->data);
stream_bucket_append($out, $bucket);
}
return PSFS_PASS_ON;
}
}
// Registerfilter
stream_filter_register("uppercase", "UppercaseFilter");
// Verwenden Sie benutzerdefinierte Filter
$fp = fopen("php://temp", "r+");
stream_filter_append($fp, "uppercase");
fwrite($fp, "hello world\n");
rewind($fp);
echo fread($fp, 1024); // Ausgabe: HELLO WORLD
fclose($fp);
In diesem Beispiel erstellen wir einen benutzerdefinierten Stream -Filter, UppercaseFilter , der alle Kleinbuchstaben im Eingangsstrom in Großbuchstaben umwandelt.
Stream_get_filters und Stream_filter_Append sind die Kernfunktionen des leistungsstarken Stream -Filtermechanismus in PHP. Mit diesen Funktionen können Sie die Filter des Streams problemlos verwalten und die Daten im Stream in Echtzeit verarbeiten. Durch die Verwendung dieser Funktionen in Kombination können Sie verschiedene Datenströme flexibel verarbeiten und die Anforderungen verschiedener Szenarien erfüllen.
In der Praxis können Sie komplexere Datenverarbeitungsanforderungen erfüllen, indem Sie die verfügbaren Stream -Filter, die Auswahl des am besten geeigneten Filters oder die Anpassung der Filter ansehen.
Ich hoffe, dieser Artikel ist hilfreich, damit Sie die Funktionen von Stream_get_filters und Stream_Filter_Append verstehen und verwenden!