Position actuelle: Accueil> Derniers articles> Combinant mb_get_info et mb_regex_encoding pour les paramètres de codage d'expression régulière

Combinant mb_get_info et mb_regex_encoding pour les paramètres de codage d'expression régulière

gitbox 2025-05-29

Lorsque vous traitez avec des chaînes multi-gobets, PHP fournit des extensions de MbString pour garantir que le codage des caractères est correctement analysé. Les expressions régulières peuvent également être affectées par les paramètres de codage, en particulier lorsque nous devons faire face à un texte codé de multicette tel que UTF-8, Shift-Jis ou EUC-JP. Heureusement, PHP fournit des fonctions MB_REGEX_ENCODING () et MB_GET_INFO () pour aider les développeurs à gérer les paramètres de codage des expressions régulières.

1. Qu'est-ce que MB_REGEX_ENCODING () ?

La fonction MB_REGEX_ENCODING () peut être utilisée pour définir ou obtenir le codage actuellement utilisé pour les expressions régulières de plusieurs sites.

grammaire:

 mb_regex_encoding(?string $encoding = null): string|bool
  • Si aucun paramètre n'est passé, il renverra le codage actuel;

  • Si un paramètre d'encodage est passé, il définit le codage de l'expression régulière et renvoie le codage précédent.

2. Le rôle de mb_get_info ()

MB_GET_INFO () est utilisé pour obtenir des informations de configuration détaillées de l'environnement MBSTRING actuel, y compris le langage, le codage interne, le codage d'entrée / sortie HTTP et le codage d'expression régulière, etc.

usage:

 mb_get_info(?string $type = null): array|string|false

Lorsque $ type est défini sur «regex_encoding» , il renvoie le codage actuellement utilisé pour le régulier.

3. Comment l'utiliser ensemble?

Voici un exemple complet montrant comment définir le codage régulier à l'aide de MB_REGEX_ENCODING () et vérifiez si les paramètres sont efficaces via MB_GET_INFO () :

 <?php
// Définissez des expressions régulières à utiliser UTF-8 codage
$previousEncoding = mb_regex_encoding('UTF-8');

echo "原本的正则表达式codage为:$previousEncoding\n";

// 验证当前正则表达式codage是否为 UTF-8
$currentRegexEncoding = mb_get_info('regex_encoding');
echo "当前的正则表达式codage为:$currentRegexEncoding\n";

// Échantillon de correspondance régulière
$pattern = '\A[\p{Hiragana}ー]+\z'; // Match des personnages Hiragana
$subject = 'こんにちは';

if (mb_ereg($pattern, $subject)) {
    echo "Correspondre avec succès:$subject C&#39;est du texte Hiragana\n";
} else {
    echo "Le match a échoué:$subject Pas en conformité avec les règles de Hiragana\n";
}
?>

Dans l'exemple ci-dessus:

  • Nous définissons d'abord le codage d'expression régulière sur UTF-8;

  • Utilisez ensuite MB_GET_INFO () pour vérifier les paramètres;

  • Utilisez ensuite mb_ereg () pour correspondre à l'attribut Unicode.

Assurez-vous que votre installation PHP a une extension MBSTring activée et prend en charge le mode Unicode régulier.

4. Pourquoi est-ce très important?

Lorsque l'on traite du contenu en plusieurs langues, en particulier impliquant des caractères chinois, des pseudonymes ou d'autres caractères spéciaux, l'utilisation d'encodages appropriés peut éviter des résultats brouillés ou inexacts dans des correspondances régulières. Si vous utilisez des expressions régulières qui ne prennent pas en charge le codage de texte actuel, il est facile de provoquer des défaillances de correspondance ou même des erreurs.

5. Questions fréquemment posées

  • Q: Si je ne définis pas explicitement le codage de l'expression régulière, quelle est la valeur par défaut? R: Le codage des caractères internes par défaut sera utilisé (défini par MB_internal_encoding () ), mais la valeur spécifique peut varier en fonction de l'environnement système, il est donc recommandé de le définir explicitement.

  • Q: Comment vérifier si PHP prend en charge la MBSTring ? R: Vous pouvez exécuter phpinfo () ou utiliser Extension_loaded («mbString») pour vérifier.

6. Lire plus approfondie