Conversion des premières lettres en majuscules (majuscules) - PHP. Fonctions de changement de casse de PHP fonction convertir la chaîne en majuscule

V variables PHP et les noms de constante sont sensibles à la casse, mais pas les noms de fonction.

Autant que je sache, PHP est le seul langage qui fait cela. Toutes les autres langues que j'ai utilisées sont soit complètement sensibles à la casse, soit complètement insensibles à la casse.

Pourquoi PHP partiellement est sensible ?

Veuillez noter que je ne demande pas quel genre les noms sont sensibles à la casse, mais Pourquoi .

Sensible aux majuscules et minuscules

  • variables
  • constantes
  • clés de tableau
  • propriétés de classe
  • constantes de classe

Insensible à la casse(à la fois défini par l'utilisateur et PHP)

  • les fonctions
  • constructeurs de classe
  • méthodes de classe
  • mots clés et les constructions (if, else, null, foreach, echo, etc.)

bases

Les variables en PHP sont représentées par un signe dollar suivi du nom de la variable. Le nom de la variable est sensible à la casse.

Les noms de variables suivent les mêmes règles que les autres étiquettes en PHP. Un nom de variable valide commence par une lettre ou un trait de soulignement, suivi d'un nombre quelconque de lettres, de chiffres ou de traits de soulignement. Comme expression régulière il s'exprime comme suit : "*"

  1. Manuel de l'Utilisateur
  2. Pourquoi les fonctions et méthodes en PHP sont-elles insensibles à la casse ?
  3. Les fonctions PHP sont-elles sensibles à la casse ?
  4. Les mots-clés PHP sont-ils sensibles à la casse ?
  5. sont les noms fonctions PHP sensible à la casse ou non ?
  6. Source de sensibilité PHP

Cas délicat

variables, constantes, clés de tableau, propriétés de classe, constantes de classe

Insensible à la casse

fonctions, constructeurs de classe, méthodes de classe, mots-clés et constructions (if, else, null, foreach, echo, etc.),

Pour les noms de fichiers :

Veuillez noter que la sensibilité à la casse dépend également de votre environnement.

Lorsque vous développez quelque chose dans votre WAMP ou XAMPP, il sera insensible à la casse, lorsque vous accédez au serveur Linux, une erreur est générée.

Pourquoi PHP est-il partiellement sensible ?

Je ne peux que supposer que cela est dû à des versions très anciennes, peut-être PHP / FI 2.0. Le manuel indique explicitement :

Sachez que les noms de fonctions PHP/FI ne sont pas sensibles à la casse.

La plupart des données utilisateur telles que GET paramètres et POST ont toujours été enregistrés en tant que variables globales. Traiter ces problèmes comme insensibles à la casse poserait probablement des problèmes, et c'est probablement la raison pour laquelle toutes les variables ont été traitées comme sensibles à la casse.

D'après ce que je peux dire, ce sont les seuls types d'identité en PHP / FI 2.0. Tous les autres ont été introduits plus tard, imitant apparemment les noms de fonctions insensibles à la casse.

Les constantes, qui sont particulières, n'ont été introduites que depuis PHP 4 (le manuel de PHP 3 mentionne des "constantes", mais elles sont désormais appelées "littéraux"). Pour une raison énigmatique (aucun consensus n'a peut-être pu être trouvé), la décision a été prise d'autoriser les identifiants constant define () d à être soit sensibles à la casse, soit insensibles au rejet du développeur. Il est intéressant de noter que bien que define() utilise des constantes sensibles à la casse par défaut, les copies C correspondantes (REGISTER _ * _ CONSTANT) sont insensibles à la casse par défaut.

Convertit les caractères d'une chaîne en minuscules.

Syntaxe:

String strtolower (string str);

Convertit une chaîne en minuscule. 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 = "HeLLo World" ; $ str = strtolower ($ str); echo $ str; // imprime hello world

strtoupper

Convertit la chaîne spécifiée en majuscule.

Syntaxe:

Chaîne strtoupper (chaîne str);

Convertit une chaîne en majuscule. Renvoie le résultat de la transformation. Cette fonction fonctionne bien avec les lettres anglaises, mais elle peut être bizarre avec les lettres russes.

$ str = "Bonjour tout le monde" ; $ str = strtoupper ($ str); echo $ str; // imprime BONJOUR MONDE

ucfirst

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); echo $ 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 (chaîne str);

Renvoie une chaîne qui met en majuscule le premier caractère de chaque mot de la chaîne.

Un mot désigne ici une section de ligne précédée d'un espace : espace, saut de ligne, saut de page, retour chariot, tabulations horizontales et verticales.

Les caractères cyrilliques peuvent ne pas être convertis correctement.

$ str = "bonjour tout le monde" ; $ str = ucfirst ($ str); echo $ str; // imprime Hello World

PHP est bon pour la variété des fonctions du langage natif. Cependant, dans certains cas, il est nécessaire d'ajouter la fonctionnalité manquante. 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'il ne devrait y avoir aucun problème, mais lorsque vous travaillez avec le cyrillique, une telle transformation ne se produit pas. Cela s'applique également à la fonction ucwords - convertit le premier caractère de chaque mot dans une chaîne en majuscule.

Il n'y a aucun problème avec les symboles de l'alphabet anglais :

"; // convertit le premier caractère de chaque mot de la chaîne en majuscules 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 chaîne en majuscules echo ucwords ($ str);?>

Ligne de test ligne de test

Pour PHP, il existe des cas typiques où les fonctions "mauvaises" 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 - conversion d'une chaîne en minuscule. Contrairement à strtolower(), le caractère est une lettre basée sur les propriétés du caractère Unicode.

Pour résoudre le problème, définissons la fonction mb_ucfirst (string str [, string encoding]), qui traitera les caractères Unicode.

Pour mettre en majuscule le premier caractère de chaque mot d'une chaîne, utilisez simplement mb_convert_case en mode MB_CASE_TITLE.

il y a 11 ans

Notez que mb_strtolower () est très LENT, si vous avez une connexion à une base de données, vous pouvez l'utiliser pour convertir vos chaînes en minuscules. Même le latin1 / 9 (iso-8859-1 / 15) et d'autres encodages sont possibles.

Jetez un œil à mon simple benchmark :

$ texte = « Lorem ipßüm Dolor SSIT amet, cönßectetüer ädipißcing elit. Sed Ligula. Präeßent jüßtö tellüß, grávida EÜ, tempüß Ä, Mattiss ¨Non, Orci. NAM QUISS Lorem. NAM aliquet Elit SSED elit. Phäßellüß venenätiß jüßtö eget enim. Donec Nissl. Proin Mattiss venenätiß jüßtö Sed aliquam PORTA Orci Crass Elit Nissl, cönvälliß QUISS, tincidunt ät, vehicula äccümßän, Odio Sed möleßtie etiam mölliß feügiät Elit Veßtibülüm änte ipßüm primiß dans fäücibüß Orci lüctüß et ültriceß pößüere cübiliä curae; ..... Mäecenäß nulla non ».;

// mb_strtolower ()
$ timeMB = microtime (vrai);

Pour ($ i = 0 ; $ i< 30000 ; $i ++)
$ inférieur = mb_strtolower ("$ text / no-cache- $ i");

$ timeMB = microtime (vrai) - $ timeMB ;

// MySQL inférieur ()
$ timeSQL = microtime (vrai);

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 (vrai) - $ timeSQL ;

echo "mb:". sprintf ("% .5f", $ timeMB). "sek.
" ;
echo "sql:". sprintf ("% .5f", $ timeSQL). "sek.
" ;

// Résultat sur mon cahier :
// Mo : 11.50642 sek.
// sql : 5.44143 sek.

?>

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 qui sont marqués de la propriété Unicode "lettre majuscule" ("Lu"). Cependant, il existe également des lettres telles que les « numéros de lettres » (propriété Unicode « Nl ») qui ont également des variantes en minuscules et en majuscules. Ces caractères ne seront pas convertis en mb_strtolower !

Exemple:
Les lettres romaines Ⅰ, Ⅱ, , ..., Ⅿ (codes UTF-8 points 8544 à 8559) existent également dans leurs variantes respectives en minuscules ⅰ, , , ..., ⅿ (codes UTF-8 points 8560 à 8575) et devraient, à mon avis, également être convertis par mb_strtolower, mais ils ne le sont pas !

Les grandes entreprises Internet (comme Google) correspondent aux deux variantes comme sémantiquement égales (puisque les représentations ne diffèrent que par cas).

Comme je ne trouvais aucune solution appropriée sur Internet sur la façon de mapper toutes les chaînes UTF8 à leur homologue en minuscules en PHP, je propose la fonction mb_strtolower étendue 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. Puisqu'il n'y a pas de table de caractères majuscules et minuscules Unicode appropriée sur Internet que j'ai pu trouver, 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 caractères majuscules, non étant remplacé par mb_strtolower, mais ayant une contrepartie en minuscules UTF8.

// les chiffres 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 boîtier

plus bas

Convertit les caractères d'une chaîne en minuscules.

Syntaxe:

string strtolower (string str);

Convertit une chaîne en minuscule. 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 = "HeLLo World" ;

$ str = strtolower ($ str);

// imprime hello world

strtoupper

Convertit la chaîne spécifiée en majuscules.

Syntaxe:

chaîne strtoupper (chaîne str);

Convertit une chaîne en majuscule. Renvoie le résultat de la transformation. Cette fonction fonctionne bien avec les lettres anglaises, mais elle peut être bizarre avec les lettres russes.

$ str = "Bonjour tout le monde" ;

$ str = strtoupper ($ str);

// imprime BONJOUR 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 qui met en majuscule le premier caractère de chaque mot de la chaîne.

Un mot désigne ici une section de ligne précédée d'un espace : espace, saut de ligne, saut de page, retour chariot, tabulations horizontales et verticales.

Les caractères cyrilliques peuvent ne pas être convertis correctement.

$ str = "bonjour tout le monde" ;

$ str = ucfirst ($ str);

// imprime Hello World

Extrait du livre Linux Kernel Modules Developer's Encyclopedia auteur Pomerantz Ori

Extrait du livre Le facteur humain dans la programmation l'auteur Constantin Larry L

54 Agents de changement Un poisson, faisant le bon mouvement au bon moment, peut changer le cours d'un banc entier. Dans un groupe de développement de logiciels, le succès de l'introduction d'un nouvel outil ou d'une méthode de contrôle de version améliorée dépend souvent de

Extrait du livre Utiliser efficacement la STL par Meyers Scott

Astuce 35. Implémentez de simples comparaisons de chaînes insensibles à la casse en utilisant mismatch ou lexicographical_compare L'une des questions fréquemment posées par les débutants STL est « Comment la STL compare-t-elle les chaînes d'une manière insensible à la casse ? La simplicité de cette question est trompeuse. Comparaisons

Extrait du livre Fondamentaux de la programmation orientée objet par Meyer Bertrand

Comparaison de chaînes insensible à la casse Matt Ostern Si vous avez déjà écrit des programmes qui utilisent des chaînes (et qui, demandez-vous, ne l'a pas fait ?), Vous avez probablement rencontré une situation typique - deux chaînes ne différant que par la casse

Extrait du livre TCP/IP Architecture, Protocols, Implementation (y compris IP version 6 et IP Security) par Faith Sidney M

Extrait du livre Technologie XSLT l'auteur Valikov Alexeï Nikolaïevitch

Changement et cohérence Le développement de logiciels, comme mentionné, a beaucoup à voir avec la répétabilité. Pour comprendre la difficulté technique de la réutilisation, il faut comprendre la nature de la répétabilité. Malgré le fait que les programmeurs répètent généralement certains et

Extrait du livre Développer des applications sous Linux. Deuxième édition l'auteur Johnson Michael K.

11.8.2 Déplacer et modifier 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 ? Au démarrage, un ordinateur utilisant DHCP changera automatiquement son adresse IP et son masque de sous-réseau, et si nécessaire -

Du livre C++. Recueil de recettes l'auteur Christophe Diggins

22.10.3 Modifications 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 est : MICKEY IN AAAA 4321 : 0 : 1 : 2 : 3 : 4 : 567 : 89AB A la recherche inversée doit également être fournie ... Pour traduire 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 Teinsley David

Extrait du livre Ordinateur de bureau pour femmes l'auteur Pasternak Evgeniya

Changements dans XPath 2.0 La version de développement du langage XPath, du fait 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 les opérateurs. Donc sur

Du livre HTML, XHTML et CSS 100% auteur Quint Igor

11.7.2. Modifications du code Une fois que les structures de données sont correctement reflétées dans parseCommand(), il devient assez facile d'exécuter des commandes dans le bon ordre avec suffisamment d'attention aux détails. Tout d'abord, nous ajoutons une boucle à parseCommand () pour démarrer les processus enfants,

Du livre de l'auteur

4.13. Exécution d'un problème de comparaison de chaînes insensible à la casse Vous avez deux chaînes et vous voulez savoir si elles ne sont pas égales, d'une manière insensible à la casse. 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

Du livre de l'auteur

4.14. Exécution d'un problème de recherche de chaîne insensible à la casse Vous souhaitez rechercher une sous-chaîne dans une chaîne, en ignorant la différence de casse. Solution Utilisez les algorithmes de transformation et de recherche standard définis dans ainsi que leurs propres fonctions de comparaison de caractères similaires à

Du livre de l'auteur

8.1.8. Ignorer la casse Par défaut, grep est sensible à la casse. Pour effectuer une recherche sans tenir compte de la casse, utilisez l'option -i. Dans le fichier data.f, la désignation du mois Sept apparaît à la fois en majuscules et en minuscules. Donc pour

Du livre de l'auteur

Modifications S'il y a de nombreuses modifications dans le document, il est pratique d'utiliser ce groupe de boutons. Par exemple, vous voyez une modification et vous êtes d'accord avec elle. Placez le curseur dedans et cliquez sur le bouton Accepter. Le point culminant de la correction disparaît et il se fond parfaitement avec votre texte.

Du livre de l'auteur

Les noms de balises et d'attributs sont insensibles à la casse Dans les documents HTML, les noms de balises et d'attributs sont insensibles à la casse, par exemple, l'écriture

,
ou
signifie la même balise de table. Cependant, en XHTML, ce sont des balises différentes. Idem pour les noms

2021 wisemotors.ru. Comment ça fonctionne. Le fer. Exploitation minière. Crypto-monnaie.