Position actuelle: Accueil> Derniers articles> Comment utiliser MB_Convert_Case avec des expressions régulières pour réaliser une conversion de cas flexible?

Comment utiliser MB_Convert_Case avec des expressions régulières pour réaliser une conversion de cas flexible?

gitbox 2025-09-19

1. Utilisation de base de mb_convert_case

La fonction MB_Convert_Case peut convertir des caractères dans une chaîne en supérieur et minuscule spécifié, et prend en charge trois modes:

  • MB_CASE_UPPER : Convertir en toute capitalisation.

  • MB_CASE_LOWER : Convertissez en minuscules.

  • MB_CASE_TITLE : convertit la première lettre de chaque mot en majuscules et en minuscules pour le reste.

Exemple de code:

 <span><span><span class="hljs-variable">$string</span></span><span> = </span><span><span class="hljs-string">"hello world! Bonjour,monde!"</span></span><span>;

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">mb_convert_case</span></span><span>(</span><span><span class="hljs-variable">$string</span></span><span>, MB_CASE_UPPER, </span><span><span class="hljs-string">"UTF-8"</span></span><span>);  </span><span><span class="hljs-comment">// Sortir:HELLO WORLD! Bonjour,monde!</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">mb_convert_case</span></span><span>(</span><span><span class="hljs-variable">$string</span></span><span>, MB_CASE_LOWER, </span><span><span class="hljs-string">"UTF-8"</span></span><span>);  </span><span><span class="hljs-comment">// Sortir:hello world! Bonjour,monde!</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">mb_convert_case</span></span><span>(</span><span><span class="hljs-variable">$string</span></span><span>, MB_CASE_TITLE, </span><span><span class="hljs-string">"UTF-8"</span></span><span>); </span><span><span class="hljs-comment">// Sortir:Hello World! Bonjour,monde!</span></span><span>
</span></span>

2. Le rôle des expressions régulières

Les expressions régulières (regex) sont un puissant outil de correspondance de motifs de chaîne. Lorsque vous traitez des conversions de chaînes complexes, les expressions régulières peuvent nous aider à localiser avec précision les pièces qui doivent être converties, telles que des mots, des lettres ou des symboles spécifiques, puis convertir ces pièces en cas.

Grâce à des expressions régulières, nous pouvons définir certaines règles et combiner mb_convert_case pour convertir les pièces appariées pour obtenir un effet plus flexible.

3. Combinez MB_Convert_Case avec des expressions régulières

3.1 Exemple: Caps la première lettre de chaque mot de la chaîne et la minuscule des autres lettres

Supposons que nous ayons une chaîne qui doit capitaliser la première lettre de chaque mot et les deux lettres, mais en même temps, nous voulons garder le cas de certains mots spécifiques (tels que "PHP") non affectés. Pour le moment, vous pouvez trouver chaque mot à travers une expression régulière et utiliser MB_Convert_Case pour y parvenir.

Exemple de code:

 <span><span><span class="hljs-variable">$string</span></span><span> = </span><span><span class="hljs-string">"this is a php test, check PHP again."</span></span><span>;

</span><span><span class="hljs-variable">$pattern</span></span><span> = </span><span><span class="hljs-string">'/\b(\w+)\b/'</span></span><span>; </span><span><span class="hljs-comment">// Faire correspondre les limites des mots</span></span><span>
</span><span><span class="hljs-variable">$callback</span></span><span> = </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> (</span><span><span class="hljs-params"><span class="hljs-variable">$matches</span></span></span><span>) {
    </span><span><span class="hljs-comment">// Caps les mots correspondants</span></span><span>
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">mb_convert_case</span></span><span>(</span><span><span class="hljs-variable">$matches</span></span><span>[</span><span><span class="hljs-number">0</span></span><span>], MB_CASE_TITLE, </span><span><span class="hljs-string">'UTF-8'</span></span><span>);
};

</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">preg_replace_callback</span></span><span>(</span><span><span class="hljs-variable">$pattern</span></span><span>, </span><span><span class="hljs-variable">$callback</span></span><span>, </span><span><span class="hljs-variable">$string</span></span><span>);

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$result</span></span><span>;  </span><span><span class="hljs-comment">// Sortir:This Is A Php Test, Check Php Again.</span></span><span>
</span></span>

Dans cet exemple, l'expression régulière / \ b (\ w +) \ b / correspond au contenu de toutes les limites des mots (c'est-à-dire chaque mot), puis convertit la première lettre de chaque mot en majuscule et en minuscules via la fonction de rappel prég_replace_callback à l'aide de mb_convert_case .

3.2 Exemple: convertir le cas en mots spécifiés

Parfois, nous avons peut-être besoin de convertir certains mots spécifiques en cas sans affecter d'autres choses. Par exemple, nous pouvons transformer tous les "php" en "php" tandis que les autres mots restent les mêmes.

Exemple de code:

 <span><span><span class="hljs-variable">$string</span></span><span> = </span><span><span class="hljs-string">"I love php, and I am learning php in 2025."</span></span><span>;

</span><span><span class="hljs-variable">$pattern</span></span><span> = </span><span><span class="hljs-string">'/\bphp\b/i'</span></span><span>;  </span><span><span class="hljs-comment">// correspondre“php”,Cas insensible au cas</span></span><span>
</span><span><span class="hljs-variable">$callback</span></span><span> = </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> (</span><span><span class="hljs-params"><span class="hljs-variable">$matches</span></span></span><span>) {
    </span><span><span class="hljs-comment">// 将correspondre到的“php”Convertir en capital</span></span><span>
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">mb_convert_case</span></span><span>(</span><span><span class="hljs-variable">$matches</span></span><span>[</span><span><span class="hljs-number">0</span></span><span>], MB_CASE_UPPER, </span><span><span class="hljs-string">'UTF-8'</span></span><span>);
};

</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">preg_replace_callback</span></span><span>(</span><span><span class="hljs-variable">$pattern</span></span><span>, </span><span><span class="hljs-variable">$callback</span></span><span>, </span><span><span class="hljs-variable">$string</span></span><span>);

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$result</span></span><span>;  </span><span><span class="hljs-comment">// Sortir:I love PHP, and I am learning PHP in 2025.</span></span><span>
</span></span>

L'expression régulière / \ bphp \ b / i ici correspond à tous les mots "php" insensibles aux cas. MB_Convert_Case les convertit en majuscules.

4. Application avancée: Convertir en fonction des conditions de contexte des caractères

Dans certains scénarios complexes, il peut être nécessaire de décider de convertir le cas en fonction de la position du personnage dans le contexte. Par exemple, certaines abréviations ou extraits de code (tels que "API") devraient rester tels qu'ils sont, tandis que d'autres mots peuvent être convertis de cas.

Exemple de code:

 <span><span><span class="hljs-variable">$string</span></span><span> = </span><span><span class="hljs-string">"the API is a powerful tool, API is awesome."</span></span><span>;

</span><span><span class="hljs-comment">// Utilisez un lookahead négatif pour exclure ceux existants“API”</span></span><span>
</span><span><span class="hljs-comment">// Cela garantira“API”Non converti,D&#39;autres mots sont convertis normalement</span></span><span>
</span><span><span class="hljs-variable">$pattern</span></span><span> = </span><span><span class="hljs-string">'/\b(?!API\b)\w+\b/'</span></span><span>;
</span><span><span class="hljs-variable">$callback</span></span><span> = </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> (</span><span><span class="hljs-params"><span class="hljs-variable">$matches</span></span></span><span>) {
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">mb_convert_case</span></span><span>(</span><span><span class="hljs-variable">$matches</span></span><span>[</span><span><span class="hljs-number">0</span></span><span>], MB_CASE_TITLE, </span><span><span class="hljs-string">'UTF-8'</span></span><span>);
};

</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">preg_replace_callback</span></span><span>(</span><span><span class="hljs-variable">$pattern</span></span><span>, </span><span><span class="hljs-variable">$callback</span></span><span>, </span><span><span class="hljs-variable">$string</span></span><span>);

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$result</span></span><span>;  </span><span><span class="hljs-comment">// Sortir:The API is A Powerful Tool, API is Awesome.</span></span><span>
</span></span>

Dans cet exemple, nous utilisons un lookahead négatif (?! api \ b) pour nous assurer que "l'API" n'est pas convertie, tandis que d'autres mots sont convertis en première lettres capitalisées.

5. Résumé

La combinaison de MB_Convert_Case et des expressions régulières peut atteindre une conversion de cas plus complexe et flexible. Cette approche convient particulièrement aux scénarios où les personnages doivent être contrôlés en fonction de règles spécifiques (telles que la correspondance de mots spécifiques, l'exclusion de certaines parties ou en fonction du contexte). Qu'il s'agisse d'une simple conversion de cas globale ou d'une situation où un contrôle granulaire est nécessaire, la combinaison de MB_Convert_Case et des expressions régulières peut fournir une solution très efficace et personnalisée.