Heim > Backend-Entwicklung > PHP-Tutorial > Warum erhalte ich nach meinem PHP-Upgrade die Fehlermeldung „preg_match(): Kompilierung fehlgeschlagen: ungültiger Bereich in der Zeichenklasse'?

Warum erhalte ich nach meinem PHP-Upgrade die Fehlermeldung „preg_match(): Kompilierung fehlgeschlagen: ungültiger Bereich in der Zeichenklasse'?

Barbara Streisand
Freigeben: 2024-12-09 21:48:15
Original
862 Leute haben es durchsucht

Why Am I Getting

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);
Nach dem Login kopieren

Zusätzlich Überlegungen

  • PCRE2 verfügt über eine strengere Unicode-Engine, die sich auf das Verhalten einiger auswirken kann ungültige Muster.
  • Stellen Sie sicher, dass Ihr Code die richtige Bindestrichplatzierung für Zeichenklassen verwendet, um Kompilierungsfehler zu vermeiden.
  • Weitere Einzelheiten zu diesen Änderungen und Kompatibilitätsproblemen finden Sie in der PHP-Dokumentation.

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage