Caractères PHP en majuscules. Convertir les premières lettres en majuscules (majuscules) - PHP
PHP est bon pour sa variété de fonctions en langage natif. Cependant, dans certains cas, il est nécessaire d’ajouter des fonctionnalités manquantes. Ceci est particulièrement visible lorsque vous travaillez avec des fonctions de conversion de chaînes et divers encodages.
Par exemple, ucfirst est une fonction qui convertit le premier caractère d'une chaîne en majuscule. Il semblerait qu'aucun problème ne devrait survenir, mais lorsque vous travaillez avec le cyrillique, une telle conversion ne se produit pas. Cela s'applique également à la fonction ucwords : elle convertit le premier caractère de chaque mot d'une ligne en majuscule.
Il n'y a aucun problème avec les caractères de l'alphabet anglais :
"; //convertit le premier caractère de chaque mot de la ligne en majuscule echo ucwords($str); ?>
Chaîne de test Chaîne de test
Mais il y a des problèmes avec l'alphabet cyrillique :
"; //convertit le premier caractère de chaque mot de la ligne en majuscule echo ucwords($str); ?>
Ligne de test Ligne de test
Les cas sont typiques pour PHP lorsque les fonctions fonctionnent « mal » ou ne fonctionnent pas du tout avec l'alphabet cyrillique. Certaines fonctions avec le préfixe mb résolvent des problèmes avec l'alphabet cyrillique. Par exemple, mb_strtolower - convertit une chaîne en minuscules. Contrairement à strtolower(), le fait qu'un caractère soit une lettre est déterminé en fonction des propriétés du caractère Unicode.
Pour résoudre le problème, définissons une fonction mb_ucfirst(string str [, string encoding]), qui traitera les caractères Unicode.
Pour convertir le premier caractère de chaque mot d'une ligne en majuscule, utilisez simplement mb_convert_case en mode MB_CASE_TITLE.
Convertit les caractères d'une chaîne en minuscules.
Syntaxe:
Chaîne strtolower(chaîne str);
Convertit une chaîne en minuscules. Renvoie le résultat de la traduction.
Il convient de noter que si les paramètres régionaux sont mal configurés, la fonction produira, pour le moins, des résultats étranges lorsque vous travaillerez avec des lettres cyrilliques.
$str = "Bonjour le monde" ; $str = strtoinférieur($str); écho $str; // imprime bonjour tout le monde
strtoupper
Convertit la chaîne spécifiée en majuscule.
Syntaxe:
Chaîne strtoupper(chaîne str);
Convertit la chaîne en majuscule. Renvoie le résultat de la conversion. Cette fonction fonctionne bien avec les lettres anglaises, mais peut être étrange avec les lettres russes.
$str = "Bonjour tout le monde" ; $str = strtoupper($str); écho $str; // affichera BONJOUR LE MONDE
ucpremier
Convertit le premier caractère d'une chaîne en majuscule.
Syntaxe:
Chaîne ucfirst(chaîne str);
Renvoie une chaîne dont le premier caractère est en majuscule.
$str = "bonjour tout le monde" ; $str = ucfirst($str); écho $str; // imprime Bonjour tout le monde
ucwords
Convertit le premier caractère de chaque mot d'une chaîne en majuscule.
Syntaxe:
Chaîne ucwords(string str);
Renvoie une chaîne avec le premier caractère de chaque mot de la chaîne en majuscule.
Un mot fait ici référence à une section de ligne précédée d'un caractère espace : espace, nouvelle ligne, saut de page, retour chariot, tabulation horizontale et verticale.
Les caractères cyrilliques peuvent ne pas être convertis correctement.
$str = "bonjour tout le monde" ; $str = ucfirst($str); écho $str; // imprime Hello World
il y a 11 ans
Notez que mb_strtolower() est très LENT, si vous disposez d'une connexion à une base de données, vous souhaiterez peut-être l'utiliser pour convertir vos chaînes en minuscules. Même les codages latin1/9 (iso-8859-1/15) et autres sont possibles.
Jetez un œil à mon benchmark simple :
$texte = "Lörem ipßüm dölör ßit ämet, cönßectetüer ädipißcing elit. Sed ligülä. Präeßent jüßtö tellüß, grävidä eü, tempüß ä, mättiß nön, örci. m qüiß lörem. venenätiß jüßtö. ßtie. önüllä.";
// mb_strtolower()
$timeMB = microtime(true);
Pour($i = 0 ; $i<
30000
;
$i
++)
$inférieur = mb_strtolower("$text/no-cache-$i");
$timeMB = microtime(true) - $timeMB ;
// MySQL inférieur()
$timeSQL = microtime(true);
Mysql_query("définir les noms latin1");
pour($i = 0 ; $i<
30000
;
$i
++) {
$r = mysql_fetch_row(mysql_query("select lower(" $text /no-cache- $i ")" ));
$inférieur = $r [ 0 ];
}
$timeSQL = microtime(true) - $timeSQL ;
écho "mb: " . sprintf ("%.5f" , $timeMB ). "seconde.
"
;
écho "sql: " . sprintf ("%.5f" , $timeSQL ). "seconde.
"
;
// Résultat sur mon carnet :
// Mo : 11,50642 secondes.
// sql : 5,44143 secondes.
?>
Il y a 7 ans
Veuillez noter que lors de l'utilisation avec UTF-8, mb_strtolower ne convertira que les caractères majuscules en minuscules marqués par la propriété Unicode "Lettre majuscule" ("Lu"). Cependant, il existe également des lettres telles que « Lettres numériques » (propriété Unicode « Nl ») qui ont également des variantes minuscules et majuscules. Ces caractères ne seront pas convertis avec mb_strtolower !
Exemple:
Les lettres romaines Ⅰ, Ⅱ, Ⅲ, ..., Ⅿ (points de code UTF-8 8544 à 8559) existent également dans leurs variantes minuscules respectives ⅰ, ⅱ, ⅲ, ..., ⅿ (points de code UTF-8 8560 à 8575) et devraient, à mon avis, être également convertis par mb_strtolower, mais ce n'est pas le cas !
Les grandes sociétés Internet (comme Google) associent les deux variantes de manière sémantiquement égale (puisque les représentations ne diffèrent que par cas).
Comme je ne trouvais aucune solution appropriée sur Internet pour mapper toutes les chaînes UTF8 à leur homologue minuscule en PHP, je propose la fonction étendue mb_strtolower codée en dur suivante pour les chaînes UTF-8 :
La fonction enveloppe la fonction existante mb_strtolower() et remplace en outre les caractères UTF8 majuscules pour lesquels il existe une représentation en minuscules. Comme il n'existe pas de table de caractères Unicode majuscules et minuscules sur Internet, j'ai vérifié le premier million de caractères UTF8 par rapport à la recherche Google et à -KeywordTool et j'ai identifié les 78 caractères suivants comme des caractères majuscules, et non étant remplacé par mb_strtolower, mais ayant un homologue minuscule UTF8.
//les nombres dans les commentaires en ligne affichent les caractères" Points de code Unicode (CP).
fonction strtolower_utf8_extended ($utf8_string)
{
$additional_replacements = tableau
("Dž" => "dž" // 453 -> 454
, "Lj" => "lj" // 456 -> 457
, "Nj" => "nj" // 459 -> 460
, "Dz" => "dz" // 498 -> 499
, "Ϸ" => "ϸ" // 1015 -> 1016
, "Ϲ" => "ϲ" // 1017 -> 1010
, "Ϻ" => "ϻ" // 1018 -> 1019
, "ᾈ" => "ᾀ" // 8072 -> 8064
, "ᾉ" => "ᾁ" // 8073 -> 8065
, "ᾊ" => "ᾂ" // 8074 -> 8066
, "ᾋ" => "ᾃ" // 8075 -> 8067
, "ᾌ" => "ᾄ" // 8076 -> 8068
, "ᾍ" => "ᾅ" // 8077 -> 8069
, "ᾎ" => "ᾆ" // 8078 -> 8070
, "ᾏ" => "ᾇ" // 8079 -> 8071
, "ᾘ" => "ᾐ" // 8088 -> 8080
, "ᾙ" => "ᾑ" // 8089 -> 8081
, "ᾚ" => "ᾒ" // 8090 -> 8082
, "ᾛ" => "ᾓ" // 8091 -> 8083
, "ᾜ" => "ᾔ" // 8092 -> 8084
, "ᾝ" => "ᾕ" // 8093 -> 8085
, "ᾞ" => "ᾖ" // 8094 -> 8086
, "ᾟ" => "ᾗ" // 8095 -> 8087
, "ᾨ" => "ᾠ" // 8104 -> 8096
, "ᾩ" => "ᾡ" // 8105 -> 8097
, "ᾪ" => "ᾢ" // 8106 -> 8098
, "ᾫ" => "ᾣ" // 8107 -> 8099
, "ᾬ" => "ᾤ" // 8108 -> 8100
, "ᾭ" => "ᾥ" // 8109 -> 8101
, "ᾮ" => "ᾦ" // 8110 -> 8102
, "ᾯ" => "ᾧ" // 8111 -> 8103
, "ᾼ" => "ᾳ" // 8124 -> 8115
, "ῌ" => "ῃ" // 8140 -> 8131
, "ῼ" => "ῳ" // 8188 -> 8179
, "Ⅰ" => "ⅰ" // 8544 -> 8560
, "Ⅱ" => "ⅱ" // 8545 -> 8561
, "Ⅲ" => "ⅲ" // 8546 -> 8562
, "Ⅳ" => "ⅳ" // 8547 -> 8563
, "Ⅴ" => "ⅴ" // 8548 -> 8564
, "Ⅵ" => "ⅵ" // 8549 -> 8565
, "Ⅶ" => "ⅶ" // 8550 -> 8566
, "Ⅷ" => "ⅷ" // 8551 -> 8567
, "Ⅸ" => "ⅸ" // 8552 -> 8568
, "Ⅹ" => "ⅹ" // 8553 -> 8569
, "Ⅺ" => "ⅺ" // 8554 -> 8570
, "Ⅻ" => "ⅻ" // 8555 -> 8571
, "Ⅼ" => "ⅼ" // 8556 -> 8572
, "Ⅽ" => "ⅽ" // 8557 -> 8573
, "Ⅾ" => "ⅾ" // 8558 -> 8574
, "Ⅿ" => "ⅿ" // 8559 -> 8575
, "Ⓐ" => "ⓐ" // 9398 -> 9424
, "Ⓑ" => "ⓑ" // 9399 -> 9425
, "Ⓒ" => "ⓒ" // 9400 -> 9426
, "Ⓓ" => "ⓓ" // 9401 -> 9427
, "Ⓔ" => "ⓔ" // 9402 -> 9428
, "Ⓕ" => "ⓕ" // 9403 -> 9429
, "Ⓖ" => "ⓖ" // 9404 -> 9430
, "Ⓗ" => "ⓗ" // 9405 -> 9431
, "Ⓘ" => "ⓘ" // 9406 -> 9432
, "Ⓙ" => "ⓙ" // 9407 -> 9433
,
"Ⓚ"
=>
"ⓚ"
// 9408 -> 9434
,
"Ⓛ"
=>
"ⓛ"
// 9409 -> 9435
,
"Ⓜ"
=>
"ⓜ"
// 9410 -> 9436
,
"Ⓝ"
=>
"ⓝ"
// 9411 -> 9437
,
"Ⓞ"
=>
"ⓞ"
// 9412 -> 9438
,
"Ⓟ"
=>
"ⓟ"
// 9413 -> 9439
,
"Ⓠ"
=>
"ⓠ"
// 9414 -> 9440
,
"Ⓡ"
=>
"ⓡ"
// 9415 -> 9441
,
"Ⓢ"
=>
"ⓢ"
// 9416 -> 9442
,
"Ⓣ"
=>
"ⓣ"
// 9417 -> 9443
,
"Ⓤ"
=>
"ⓤ"
// 9418 -> 9444
,
"Ⓥ"
=>
"ⓥ"
// 9419 -> 9445
,
"Ⓦ"
=>
"ⓦ"
// 9420 -> 9446
,
"Ⓧ"
=>
"ⓧ"
// 9421 -> 9447
,
"Ⓨ"
=>
"ⓨ"
// 9422 -> 9448
, "Ⓩ" => "ⓩ" // 9423 -> 9449
,
"𐐦"
=>
"𐑎"
// 66598 -> 66638
, "𐐧" => "𐑏" // 66599 -> 66639
);
$utf8_string = mb_strtolower($utf8_string, "UTF-8");
$utf8_string = strtr ($utf8_string, $additional_replacements);
Renvoie $utf8_string ;
) //strtolower_utf8_extended()
Fonctions de changement de cas
strtoinférieur
Convertit les caractères d'une chaîne en minuscules.
Syntaxe:
chaîne strtolower(chaîne str);
Convertit une chaîne en minuscules. Renvoie le résultat de la traduction.
Il convient de noter que si les paramètres régionaux sont mal configurés, la fonction produira, pour le moins, des résultats étranges lorsque vous travaillerez avec des lettres cyrilliques.
$str = "Bonjour le monde" ;
$str = strtoinférieur($str);
// imprime bonjour tout le monde
strtoupper
Convertit la chaîne spécifiée en majuscule.
Syntaxe:
chaîne strtoupper(chaîne str);
Convertit la chaîne en majuscule. Renvoie le résultat de la conversion. Cette fonction fonctionne bien avec les lettres anglaises, mais peut être étrange avec les lettres russes.
$str = "Bonjour tout le monde" ;
$str = strtoupper($str);
// affichera BONJOUR LE MONDE
Convertit le premier caractère d'une chaîne en majuscule.
Syntaxe:
chaîne ucfirst(chaîne str);
Renvoie une chaîne dont le premier caractère est en majuscule.
$str = "bonjour tout le monde" ;
$str = ucfirst($str);
// imprime Bonjour tout le monde
Convertit le premier caractère de chaque mot d'une chaîne en majuscule.
Syntaxe:
chaîne ucwords(chaîne str);
Renvoie une chaîne avec le premier caractère de chaque mot de la chaîne en majuscule.
Un mot fait ici référence à une section de ligne précédée d'un caractère espace : espace, nouvelle ligne, saut de page, retour chariot, tabulation horizontale et verticale.
Les caractères cyrilliques peuvent ne pas être convertis correctement.
$str = "bonjour tout le monde" ;
$str = ucfirst($str);
// imprime Hello World
Extrait du livre Encyclopédie du développeur de modules du noyau Linux par Pomerantz Ori Extrait du livre Facteurs humains dans la programmation auteur Konstantin Larry L.54 Agents de changement Un poisson, faisant le bon mouvement au bon moment, peut changer le cours d'un banc entier. Dans une équipe de développement de logiciels, le succès de l'introduction d'un nouvel outil ou d'une méthode améliorée de contrôle de version dépend souvent de
Extrait du livre Utiliser STL efficacement par Meyers ScottAstuce 35 : Implémentez de simples comparaisons de chaînes insensibles à la casse en utilisant mismatch ou lexicographical_compare L'une des questions souvent posées par les débutants en STL est « Comment la STL compare-t-elle les chaînes insensibles à la casse ? » La simplicité de cette question est trompeuse. Comparaisons
Extrait du livre Fondamentaux de la programmation orientée objet de Meyer BertrandComparaison de chaînes insensibles à la casse Matt OsternSi vous avez déjà écrit des programmes qui utilisent des chaînes (et qui ne l'a pas fait ?), vous avez probablement rencontré une situation courante : deux chaînes qui ne diffèrent que par la casse.
Extrait du livre Architecture TCP/IP, protocoles, implémentation (y compris IP version 6 et IP Security) par Faith Sydney M Extrait du livre Technologie XSLT auteur Valikov Alexeï NikolaïevitchChangement et cohérence Le développement de logiciels, comme mentionné, a beaucoup à voir avec la répétition. Pour comprendre la difficulté technique de la réutilisation, il faut comprendre la nature de la répétition. Même si les programmeurs répètent généralement les mêmes idées de temps en temps
Extrait du livre Développement d'applications dans l'environnement Linux. Deuxième édition auteur JohnsonMichael K.11.8.2 Déplacements et modifications Que se passe-t-il si l'utilisateur déplace l'ordinateur vers un autre emplacement, en le connectant à un autre réseau ou sous-réseau ? Lors du démarrage, un ordinateur utilisant DHCP modifiera automatiquement son adresse IP et son masque de sous-réseau, et si nécessaire -
Extrait du livre C++. Recueil de recettes auteur Christopher Diggins10.22.3 Modifications du DNS Un nouveau type d'enregistrement de ressource, AAAA, mappe les noms de domaine aux adresses IP version 6. Un exemple d'un tel enregistrement : MICKEY IN AAAA 4321:0:1:2:3:4:567:89ABRecherche inversée. doit également être fourni. Pour résoudre les adresses en noms pour IPv6, vous devrez ajouter de nouveaux domaines. Recherche inversée
Extrait du livre Linux et UNIX : programmation shell. Guide du développeur. par Tainsley David Extrait du livre Ordinateur de bureau pour les femmes auteur Pasternak EvgeniaChangements dans XPath 2.0 La version en développement du langage XPath, en raison de l'intégration avec XQuery, va évidemment subir des changements majeurs. La nouvelle spécification est déjà divisée en deux documents : un document décrivant le modèle de données et un document décrivant les fonctions et opérateurs. Donc sur
Extrait du livre HTML, XHTML et CSS 100% auteur Kvint Igor11.7.2. Modifications du code Une fois que parseCommand() a correctement reflété les structures de données, exécuter les commandes dans le bon ordre est assez facile avec suffisamment d'attention aux détails. Tout d'abord, nous ajoutons une boucle à parseCommand() pour lancer les processus enfants,
Extrait du livre de l'auteur4.13. Exécution d'un problème de comparaison de chaînes insensible à la casse Vous disposez de deux chaînes et souhaitez déterminer si elles sont égales, quelle que soit la casse de leurs caractères. Par exemple, « cat » n'est pas égal à « dog », mais « Cat » doit être égal à « cat », « CAT » ou « caT ». Solution : Comparez les chaînes en utilisant la norme.
Extrait du livre de l'auteur4.14. Exécution d'une recherche de chaîne insensible à la casse Problème Vous souhaitez rechercher une sous-chaîne dans une chaîne qui ne respecte pas les différences de casse Solution Utilisez les algorithmes de transformation et de recherche standard définis dans .
8.1.8. Ignorer la casse Par défaut, la commande grep est sensible à la casse. Pour effectuer une recherche qui ne respecte pas la casse, utilisez l'option -i. Dans le fichier data.f, le symbole du mois Sept apparaît en majuscules et en minuscules. Donc pour
Extrait du livre de l'auteurModifications S'il y a de nombreuses modifications dans le document, il est pratique d'utiliser ce groupe de boutons. Par exemple, vous voyez une correction et vous l'acceptez. Placez le curseur dedans et cliquez sur le bouton Accepter. La mise en évidence de la correction disparaît, et elle s'intègre organiquement dans votre texte.
Extrait du livre de l'auteurL'objectif des noms de balises et d'attributs est sensible à la casse. Dans les documents HTML, les noms de balises et d'attributs ne sont pas sensibles à la casse, de sorte que, par exemple,