PHP アップグレード後の文字クラスの範囲が無効です
このエラー、「preg_match(): コンパイルに失敗しました: オフセットの文字クラスの範囲が無効です」 20」は通常、PHP のアップグレードによって、使用されている PCRE エンジンまたは Unicode エンジンに変更が導入された場合に発生します。 code.
PHP PCRE2 の移行
PHP 7.3 以降のバージョンでは PCRE2 が利用されており、下位互換性のない変更がいくつか導入されています。そのような変更の 1 つは、文字クラス パターンの検証の厳格化です。
文字クラス内のハイフン
以前は、ハイフン (-) をエスケープして、文字クラス内のどこでも使用できました。キャラクタークラス。ただし、PHP 7.3 以降では、ハイフンを文字クラスの先頭または末尾にのみ配置する必要があります。
解決策
このエラーを解決するには、次のことを確認してください。ハイフン (-) は文字クラス内に正しく配置されます。クラス内でハイフンを文字として使用する必要がある場合は、エスケープする必要があります (例: -)。
例
// 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);
追加考慮事項
以上がPHP のアップグレード後に「preg_match(): コンパイルに失敗しました: 文字クラスの範囲が無効です」というメッセージが表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。