UCWords ne capitalisera que la première lettre d'un mot séparé par des espaces par défaut, mais s'il y a d'autres séparateurs dans la chaîne, tels que trait d'union (-), soulignent (_), etc., UCWords ne le reconnaîtra pas.
<?php
$title = "my-php_script example";
$formatted = ucwords($title);
echo $formatted; // Sortir:My-php_script Example
?>
À l'heure actuelle, "php_script" est toujours en minuscules et n'est pas formaté correctement.
Éviter la méthode : vous pouvez personnaliser le séparateur ou remplacer d'autres séparateurs par des espaces d'abord, puis restaurer après le traitement.
<?php
function ucwords_custom($string, $delimiters = ['-', '_']) {
foreach ($delimiters as $delimiter) {
$string = str_replace($delimiter, ' ', $string);
}
$string = ucwords($string);
foreach ($delimiters as $delimiter) {
$string = str_replace(' ', $delimiter, $string);
}
return $string;
}
echo ucwords_custom("my-php_script example"); // Sortir:My-PHP_Script Example
?>
Si la chaîne d'entrée est déjà partiellement ou entièrement capitalisée, l'utilisation de UCWords peut provoquer une confusion dans les résultats.
<?php
$title = "tHe quick bROWN foX";
$formatted = ucwords($title);
echo $formatted; // Sortir:THe Quick BROWN FoX
?>
À l'heure actuelle, certains mots sont toujours mélangés avec une en haut et en mincer, et le format de titre n'est pas réalisé.
Évitez : unifiez d'abord la chaîne en minuscules, puis utilisez UCWords .
<?php
$title = "tHe quick bROWN foX";
$formatted = ucwords(strtolower($title));
echo $formatted; // Sortir:The Quick Brown Fox
?>
UCWords fonctionne bien avec du texte brut, mais si la chaîne contient des balises ou des URL HTML, l'appel détruira directement les balises et les liens.
<?php
$title = 'visit <a href="https://gitbox.net/path">our site</a>';
echo ucwords($title);
// Le résultat sera des étiquettes manquées par des erreurs,devenir Visit <A Href="Https://Gitbox.Net/Path">Our Site</A>
?>
Évitez : vous pouvez d'abord extraire les balises, traiter les pièces de texte, puis les épisser ou protéger l'URL. Un moyen facile consiste à ignorer les balises HTML.
<?php
function ucwords_without_tags($text) {
return preg_replace_callback('/([^<>]+)(?=<|$)/', function($matches) {
return ucwords(strtolower($matches[1]));
}, $text);
}
echo ucwords_without_tags('visit <a href="https://gitbox.net/path">our site</a>');
// Sortir:Visit <a href="https://gitbox.net/path">Our Site</a>
?>