In PHP ist Stream ein Mechanismus, der Eingaben und Ausgabe von Dateien, Netzwerken, Geräten usw. verarbeitet. PHP bietet leistungsstarke Stream -Filter, die Daten im Stream filtern und ändern können. Stream_get_filters und Stream_filter_remove sind häufig verwendete Stream -Filterfunktionen. In diesem Artikel wird ausführlich erläutert, wie diese beiden Funktionen zur Implementierung der Stream -Filterung kombiniert werden können.
Stream -Filter ist ein Mechanismus, der auf Streams angewendet wird, mit dem Sie Stream -Daten ändern, konvertieren und filtern. Sie können beispielsweise einen Stream -Filter verwenden, um in Dateiströmen zu verschlüsseln, zu entschlüsseln, zu komprimieren, zu dekomprimieren und andere Vorgänge.
PHP bietet eine Vielzahl von integrierten Stream-Filtern, und Benutzer können auch Stream-Filter anpassen. Gemeinsame Filter wie String.toupper können Daten in einem Stream in Großbuchstaben umwandeln.
Die Funktion Stream_get_filters () gibt eine Liste aller in PHP verfügbaren Stream -Filter zurück. Diese Funktion gibt ein Array zurück, das alle Filternamen enthält.
$filters = stream_get_filters();
print_r($filters);
Durch die Ausführung dieses Codes werden alle verfügbaren Filter aufgeführt. Sie können alle PHP-unterstützten Filter über diese Liste anzeigen und dann entscheiden, welcher Filter für Ihre Anforderungen geeignet ist.
Mit der Funktion Stream_filter_Remove () werden Filter entfernen, die auf den Stream angewendet wurden. Dies bedeutet, dass Sie diese Funktion verwenden können, um ihn zu entfernen, wenn Sie keinen Filter mehr benötigen, um den Stream zu verarbeiten. Dieser Vorgang schließt den Fluss nicht, sondern hört nur auf, den Fluss zu filtern.
$filter = stream_filter_append($stream, 'string.toupper');
stream_filter_remove($filter);
In diesem Code wird Stream_filter_Append () verwendet, um dem Stream $ Stream einen Filter hinzuzufügen, der Daten in Großbuchstaben umwandelt, und diesen Filter dann über stream_filter_remove () entfernt.
Angenommen, wir haben einen Textstrom und möchten dem Stream einen Filter hinzufügen, um den gesamten Text umzuwandeln. Entfernen Sie diesen Filter unter bestimmten Bedingungen und stellen Sie den Originaltext wieder her.
<?php
// Öffnen Sie einen Textstrom
$stream = fopen('php://temp', 'r+');
fwrite($stream, "Hello World! This is a test message.");
rewind($stream);
// Holen Sie sich alle verfügbaren Filter
$filters = stream_get_filters();
echo "Available filters:\n";
print_r($filters);
// Einen Filter anwenden,Inhalt in die Kapitalisierung konvertieren
$filter = stream_filter_append($stream, 'string.toupper');
// Lesen und Ausgabe von Daten im Stream(Bereits in Kapital)
rewind($stream);
echo "After applying 'string.toupper' filter:\n";
echo fread($stream); // Ausgabe: HELLO WORLD! THIS IS A TEST MESSAGE.
// Filter entfernen
stream_filter_remove($filter);
// 重新Lesen und Ausgabe von Daten im Stream(Stellen Sie den Originaltext wieder her)
rewind($stream);
echo "\nAfter removing the filter:\n";
echo fread($stream); // Ausgabe: Hello World! This is a test message.
?>
Öffnen Sie den Stream : Wir öffnen einen temporären Speicherstrom über fopen ('php: // temp', 'r+') und schreiben einige Textdaten hinein.
Holen Sie sich alle verfügbaren Filter : Verwenden Sie Stream_get_filters (), um alle registrierten Filter zu erhalten, und drucken Sie sie aus. Über diese Liste können Sie die Filter auswählen, die Sie bewerben möchten.
Filter anwenden : Verwenden Sie die Funktion von Stream_filter_Append (), um dem Stream einen String.Toupper -Filter hinzuzufügen, der den gesamten Text in Großbuchstaben umwandeln soll.
Filter entfernen : Verwenden Sie Stream_filter_remove (), um den Filter so zu entfernen, dass die Daten im Stream in seinen ursprünglichen Status zurückkehren.
Ausgabedaten : Nachdem wir den Filter angewendet und entfernt haben, geben wir Daten im Stream über Fread () aus, um die Änderungen im Filtereffekt anzuzeigen.
Available filters:
Array
(
[0] => string.toupper
[1] => convert.iconv.utf-8.utf-16
[2] => convert.iconv.utf-16.utf-8
[3] => string.rot13
[4] => string.lower
...
)
After applying 'string.toupper' filter:
HELLO WORLD! THIS IS A TEST MESSAGE.
After removing the filter:
Hello World! This is a test message.
Die Funktion Stream_get_filters () gibt alle verfügbaren Filter zurück, die direkt zum Verarbeiten von Stream -Daten verwendet werden können.
Der String.Toupper -Filter wandelt alles im Strom in Großbuchstaben um.
Nachdem die Funktion stream_filter_remove () den Filter entfernt hat, kehrt der Inhalt im Stream in seinen ursprünglichen Status zurück.
Über stream_get_filters und stream_filter_remove können wir den Prozess der Durchflussdaten flexibel steuern. Diese beiden Funktionen sind in einigen Szenarien sehr nützlich, in denen eine dynamische Änderung der Durchflussfilterung erforderlich ist. Sie können zur Laufzeit verschiedene Filter auswählen oder sie unter bestimmten Bedingungen sogar entfernen, um die ursprünglichen Daten wiederherzustellen.