Ungültiger Bereich in der Zeichenklasse nach PHP-Upgrade
Dieser Fehler: „preg_match(): Kompilierung fehlgeschlagen: Ungültiger Bereich in der Zeichenklasse am Offset 20“ tritt normalerweise auf, wenn ein PHP-Upgrade Änderungen an der PCRE-Engine oder der in Ihrem verwendeten Unicode-Engine mit sich bringt Code.
PHP PCRE2-Migration
PHP 7.3 und spätere Versionen verwenden PCRE2, das mehrere abwärtsinkompatible Änderungen mit sich brachte. Eine dieser Änderungen ist die strengere Validierung von Zeichenklassenmustern.
Bindestriche in Zeichenklassen
Bisher konnte man einen Bindestrich (-) maskieren und an einer beliebigen Stelle innerhalb eines verwenden Charakterklasse. Ab PHP 7.3 dürfen Sie den Bindestrich jedoch nur am Anfang oder am Ende der Zeichenklasse platzieren.
Lösung
Um diesen Fehler zu beheben, stellen Sie sicher, dass Bindestriche (-) werden innerhalb von Zeichenklassen korrekt platziert. Wenn Sie einen Bindestrich als Zeichen innerhalb der Klasse verwenden müssen, müssen Sie ihn maskieren (z. B. -).
Beispiel
// Invalid (in PHP 7.3+) preg_match("/^[a-z0-9]([0-9a-z_\-\s])+$/i", $subuser); // Valid (in PHP 7.3+) preg_match("/^[a-z0-9]([0-9a-z\-_\s])+$/i", $subuser);
Zusätzlich Überlegungen
Das obige ist der detaillierte Inhalt vonWarum erhalte ich nach meinem PHP-Upgrade die Fehlermeldung „preg_match(): Kompilierung fehlgeschlagen: ungültiger Bereich in der Zeichenklasse'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!