Aktueller Standort: Startseite> Neueste Artikel> Wie erstelle ich einen einfachen Textkonvertierungsfilter mit Stream_filter_Append?

Wie erstelle ich einen einfachen Textkonvertierungsfilter mit Stream_filter_Append?

gitbox 2025-09-29

Wie erstelle ich einen einfachen Textkonvertierungsfilter mit Stream_filter_Append ?

In PHP können wir mit der Funktion stream_filter_append () einen Filter an den Stream anhängen, damit die Daten im Stream in Echtzeit verarbeitet und konvertiert werden können. In diesem Artikel wird vorgestellt, wie Sie Stream_filter_Append () verwenden, um einen einfachen Textkonvertierungsfilter zu erstellen, Daten im Stream zu manipulieren und einige gemeinsame Textumwandlungen wie Großbuchstaben, Umwandlung von Kleinbuchstaben usw. durchzuführen.

Was ist stream_filter_append () ?

stream_filter_append () ist eine PHP-integrierte Funktion, mit der Sie einen Filter an einen bestimmten Stream anhängen können. Die Funktion des Filters besteht darin, die Daten im Stream zu verarbeiten, wie z. B. Änderungen, Umwandlung, Komprimierung usw. Der Durchflussfilter kann von Ihnen integriert oder angepasst werden.

Grundlegende Syntax

 <span><span><span class="hljs-title function_ invoke__">stream_filter_append</span></span><span>(resource </span><span><span class="hljs-variable">$stream</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$filtername</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$read_write</span></span><span> = STREAM_FILTER_READ, </span><span><span class="hljs-keyword">mixed</span></span><span> </span><span><span class="hljs-variable">$params</span></span><span> = </span><span><span class="hljs-literal">null</span></span><span>): </span><span><span class="hljs-keyword">bool</span></span><span>
</span></span>
  • $ stream : Der Stream zum Anhängen des Filters.

  • $ filtername : Der Name des Filters, der ein integrierter Filter oder ein benutzerdefinierter Filter sein kann.

  • $ read_write : Gibt an, ob ein Stream gelesen oder geschrieben werden soll. Stream_filter_read repräsentiert den Lesestream, und Stream_filter_write repräsentiert den Schreibstream.

  • $ params : Parameter übergeben an den Filter (optional).

Erstellen Sie einen einfachen Textkonvertierungsfilter

Hier ist ein Beispiel für das Erstellen eines Textkonvertierungsfilters. Wir werden einen Filter implementieren, der Text in Großbuchstaben umwandelt.

Schritt 1: Definieren Sie einen benutzerdefinierten Filter

Zunächst müssen wir eine einfache Filterklasse erstellen, die Klasse PHP_USER_FILTER erben und ihre Methoden implementieren. Dieser Filter konvertiert den Text im Stream in Großbuchstaben.

 <span><span><span class="hljs-class"><span class="hljs-keyword">class</span></span></span><span> </span><span><span class="hljs-title">UppercaseFilter</span></span><span> </span><span><span class="hljs-keyword">extends</span></span><span> </span><span><span class="hljs-title">php_user_filter</span></span><span> {
    </span><span><span class="hljs-keyword">public</span></span><span> </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">filter</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$in</span></span></span><span>, </span><span><span class="hljs-variable">$out</span></span><span>, &amp;</span><span><span class="hljs-variable">$consumed</span></span><span>, </span><span><span class="hljs-variable">$closing</span></span><span>) {
        </span><span><span class="hljs-keyword">while</span></span><span> (</span><span><span class="hljs-variable">$bucket</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stream_bucket_make_writeable</span></span><span>(</span><span><span class="hljs-variable">$in</span></span><span>)) {
            </span><span><span class="hljs-comment">// Konvertieren Sie Daten in Streams in Großbuchstaben</span></span><span>
            </span><span><span class="hljs-variable">$bucket</span></span><span>-&gt;data = </span><span><span class="hljs-title function_ invoke__">strtoupper</span></span><span>(</span><span><span class="hljs-variable">$bucket</span></span><span>-&gt;data);
            </span><span><span class="hljs-comment">// Die konvertierten Daten in den Zielstrom ausgeben</span></span><span>
            </span><span><span class="hljs-title function_ invoke__">stream_bucket_append</span></span><span>(</span><span><span class="hljs-variable">$out</span></span><span>, </span><span><span class="hljs-variable">$bucket</span></span><span>);
        }
        </span><span><span class="hljs-keyword">return</span></span><span> PSFS_PASS_ON;
    }
}
</span></span>

In dieser Klasse ist die Filter () -Methode der kritischste Teil. Es empfängt die Daten des Eingabestreams, konvertieren sie in Großbuchstaben und geben dann in den Zielstrom aus.

Schritt 2: Registrieren Sie den Filter

Als nächstes müssen wir die Funktion stream_filter_register () verwenden, um diesen benutzerdefinierten Filter in die PHP -Umgebung zu registrieren.

 <span><span><span class="hljs-title function_ invoke__">stream_filter_register</span></span><span>(</span><span><span class="hljs-string">"uppercase"</span></span><span>, </span><span><span class="hljs-string">"UppercaseFilter"</span></span><span>) </span><span><span class="hljs-keyword">or</span></span><span> </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"Filter registration failed"</span></span><span>);
</span></span>

Durch diesen Schritt registrieren wir den Großbuchstaben als Filter, der in Großbuchstaben bezeichnet wird, damit wir die Stream -Verarbeitung verwenden können.

Schritt 3: Verwenden Sie Stream_filter_Append () , um Filter hinzuzufügen

Wir können den registrierten Filter über Stream_filter_Append () an einen Stream anhängen. Hier ist ein Beispiel, das zeigt, wie Sie eine Textdatei lesen und ihren Inhalt über einen Stream -Filter in Großbuchstaben konvertieren.

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// Registerfilter</span></span><span>
</span><span><span class="hljs-title function_ invoke__">stream_filter_register</span></span><span>(</span><span><span class="hljs-string">"uppercase"</span></span><span>, </span><span><span class="hljs-string">"UppercaseFilter"</span></span><span>) </span><span><span class="hljs-keyword">or</span></span><span> </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"Filter registration failed"</span></span><span>);

</span><span><span class="hljs-comment">// Öffnen Sie den Dateistrom</span></span><span>
</span><span><span class="hljs-variable">$stream</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fopen</span></span><span>(</span><span><span class="hljs-string">"example.txt"</span></span><span>, </span><span><span class="hljs-string">"r"</span></span><span>);

</span><span><span class="hljs-comment">// Fügen Sie einen benutzerdefinierten Konvertierungsfilter an den Dateistrom bei</span></span><span>
</span><span><span class="hljs-title function_ invoke__">stream_filter_append</span></span><span>(</span><span><span class="hljs-variable">$stream</span></span><span>, </span><span><span class="hljs-string">"uppercase"</span></span><span>, STREAM_FILTER_READ);

</span><span><span class="hljs-comment">// Lesen Sie den Dateiinhalt und geben Sie ihn aus</span></span><span>
</span><span><span class="hljs-keyword">while</span></span><span> (</span><span><span class="hljs-variable">$line</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fgets</span></span><span>(</span><span><span class="hljs-variable">$stream</span></span><span>)) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$line</span></span><span>;
}

</span><span><span class="hljs-comment">// Schließen Sie den Dateistrom</span></span><span>
</span><span><span class="hljs-title function_ invoke__">fclose</span></span><span>(</span><span><span class="hljs-variable">$stream</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

Im obigen Beispiel öffnen wir eine Datei namens example.txt und fügen den Großbuchstaben Filter an den Dateistrom hinzu. Wenn wir Daten im Stream lesen, wandelt der Filter sie automatisch in Großbuchstaben um und gibt es dann aus.

Schritt 4: Test und Überprüfung

Nehmen wir an, dass der Inhalt in der Datei example.txt wie folgt lautet:

 <span><span>hello world
</span><span><span class="hljs-keyword">this</span></span><span> </span><span><span class="hljs-keyword">is</span></span><span> a test.
</span></span>

Nach dem Ausführen des obigen Codes ist die Ausgabe:

 <span><span>HELLO WORLD
THIS IS </span><span><span class="hljs-selector-tag">A</span></span><span> TEST.
</span></span>

Wie Sie sehen können, wurde der gesamte Text in Großbuchstaben umgewandelt.

Zusammenfassen

Mit stream_filter_append () können wir Streams leicht Filter hinzufügen, um die Echtzeitverarbeitung von Daten zu erreichen. In diesem Artikel haben wir einen einfachen Textkonvertierungsfilter erstellt, der Eingabetxt in Großbuchstaben umwandelt. Durch die Kombination von benutzerdefinierten Filtern und Streams bietet PHP leistungsstarke Funktionen für Stream -Datenverarbeitungsfunktionen, die verschiedene komplexe Szenarienanforderungen erfüllen können.

Hoffentlich können Sie mit diesem einfachen Beispiel verstehen, wie Sie Stream_filter_Append () verwenden, um Ihren eigenen Stream -Filter zu erstellen und auf die Textverarbeitung anzuwenden.