Heim > Artikel > Backend-Entwicklung > Wie entferne ich Steuerzeichen effektiv aus PHP-Strings?
Steuerzeichen aus PHP-Strings entfernen
F: Ändern des regulären Ausdrucks zum Entfernen von Steuerzeichen
Ein PHP-Entwickler verwendete zuvor den folgenden Ausdruck, um Steuerzeichen wie STX aus einer Zeichenfolge zu entfernen:
preg_replace("/[^a-zA-Z0-9 .\-_;!:?äÄöÖüÜß<>='\"]/","",$pString)
Das Ergebnis war jedoch zu restriktiv, was die Frage aufwarf: Wie können Steuerzeichen selektiv entfernt werden?
A: Verwendung spezifischer Zeichenklassen zur Identifizierung von Steuerzeichen
Um Steuerzeichen gezielt anzusprechen, kann eine spezifischere Zeichenklasse verwendet werden:
preg_replace('/[\x00-\x1F\x7F]/', '', $input);
Dieser Ausdruck gleicht Zeichen mit ASCII-Codes im Bereich x00-x1F und x7F ab, einschließlich der ersten 32 Zeichen, und x7F, einschließlich Zeichen wie Wagenrückläufe.
Beibehaltung wesentlicher Zeichen wie Zeilenumbrüche
Wenn bestimmte Zeichen wie Zeilenvorschübe oder Wagenrückläufe beibehalten werden müssen, können deren Escape-Sequenzen ausgeschlossen werden:
preg_replace('/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F]/', '', $input);
In diesem modifizierten Ausdruck x0A (Zeilenvorschub) und x0D (Wagenrücklauf) sind von der Zeichenklasse ausgeschlossen.
Moderne Syntax und Veraltung
Es ist wichtig zu beachten, dass die Veraltung von ereg_replace in PHP 5.3.0 und seinen Die anschließende Entfernung in PHP 7.0.0 erfordert die Verwendung von preg_replace anstelle von ereg_replace.
Schließlich eine Zeichenklasse für Steuerzeichen
Für eine prägnante und portable Alternative ist die Zeichenklasse [:cntrl:] einsetzbar:
preg_replace('/[[:cntrl:]]/', '', $input);
Das obige ist der detaillierte Inhalt vonWie entferne ich Steuerzeichen effektiv aus PHP-Strings?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!