ホームページ >バックエンド開発 >PHPチュートリアル >PHP のアップグレード後に「文字クラスの範囲が無効です」というメッセージが表示されて `preg_match()` が失敗するのはなぜですか?
preg_match(): PHP アップグレード後の文字クラスの範囲が無効です
エラー「preg_match(): コンパイルに失敗しました: 文字の範囲が無効です」 「オフセットのクラス」は通常、通常の文字クラス内でハイフン (-) が誤って使用されている場合に発生します。 expression.
提供されたコード スニペット内:
文字クラス [0-9a-z_-s] 内にハイフン「-」があります。古いバージョンの PHP では、ハイフンをバックスラッシュでエスケープするか、文字クラスの先頭または末尾にハイフンを配置すると、ハイフンを使用できました。
PHP 7.3 および PCRE2 の変更点
ただし、PHP 7.3 と PCRE2 ライブラリへの移行では、ハイフンの使用がさらに制限されています。 PCRE2 では、ハイフンは文字クラスの先頭または末尾でのみ使用できます。
この問題を解決するには、文字クラスを次のように変更します。
これにより、ハイフンが次の位置に配置されます。文字クラスの先頭を指定して、正しく使用できるようにします。
追加注
以上がPHP のアップグレード後に「文字クラスの範囲が無効です」というメッセージが表示されて `preg_match()` が失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。