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.
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.
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.
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'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.
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.
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.