Calculer le pourcentage de majuscules dans une chaine [PHP] - PHP - Programmation
Marsh Posté le 05-11-2003 à 16:40:13
Pourcentage de majuscules :
Code :
|
Marsh Posté le 05-11-2003 à 17:18:55
Vous avez oublié les lettres ÁÀÉÈÍÌÓÒÚÙÇ ainsi que quelques autres
Marsh Posté le 01-12-2003 à 17:21:40
Kristoph a écrit : Vous avez oublié les lettres ÁÀÉÈÍÌÓÒÚÙÇ ainsi que quelques autres |
Marsh Posté le 01-12-2003 à 17:28:13
Mara's dad a écrit : Pourcentage de majuscules :
|
les expressions régulières c'ets pas plus lourd en calcul?
surtt si il doit faire de nombreux tests.
Il mes emble que j'avais lu quelquechose sur la lourdeur des expressions régulières , mais bon ca reste a confirmer. Je ne suis pas sur
Marsh Posté le 01-12-2003 à 17:38:02
Saxgard a écrit : |
C'est moins lourd qu'une boucle en PHP avec l'appel de ctype_upper() pour chaque caractère
M'enfin, si t'as un autre algo, te fais pas prier.
Marsh Posté le 01-12-2003 à 17:50:37
Mara's dad a écrit : |
pourquoi tu fini toujours par etre désagréable ca te plait tant que ca
c'est juste une question !!
mais la boucle , si il ya plusieurs chaine a tester est inévitable aussi avce lamethode de l'expression régulière?
Marsh Posté le 01-12-2003 à 17:51:33
sinon bin euh non j'ai pas d'autre solution a proposerc'ets juste que ca 1er solution a quelquechose pres me paraiszait pas tropmal , juste un peu plus longue a ecrire
Marsh Posté le 01-12-2003 à 18:15:03
Désolé, c'était pas une attaque
Je veux juste dire que pour compter les majuscules d'une chaîne de 100 caractères avec ctype_upper(), il faut appeler 100 fois ctype_upper().
Quand à ma question de savoir si t'as un algo, ben elle est sincère. Tu demandes :
Citation : les expressions régulières c'est pas plus lourd en calcul? |
J'ai fait le test en bouclant 100 000 fois pour chaque algo, avec une chaîne de 35 caractères:
preg_match_all : 3.48249399662 secondes
str_replace : 4.65074300766 secondes
ctype_upper : 16.9138089418 secondes
preg_match_all gagne le match, mais de pas beaucoup
Marsh Posté le 01-12-2003 à 18:25:46
Mara's dad a écrit : Désolé, c'était pas une attaque
|
pardon j'avais vu ca commeun reukant d'agressivité soudaine
ah oauis en effet, comme test ca parait assez concluant
par contrec clairq ue le ctype_upper il prend une rouste
Marsh Posté le 01-12-2003 à 22:42:53
Normal pour ctype_upper, il y a le temps perdu en appels de fonction, qu'on doit éviter très largement en passant pas les expressions régulières.
Marsh Posté le 01-12-2003 à 23:48:27
Le fin du fin :
preg_match_all( "/[[:upper:]]/", $test, $x )
Retourne le nombre de Majuscules de $test. $x contient la liste des caractères trouvés :
Exemple :
Code :
|
Résultat :
Code :
|
J'ai trouvé l'info là : http://www.perldoc.com/perl5.6/pod [...] xpressions
Citation : The POSIX character class syntax |
C'est pas cité dans la doc PHP, mais çà marche.
Normalement, on peut aussi faire \p{IsUpper}, mais çà ne fonctionne pas avec PHP
Bref les regexp, y'a plein de façon de faire les choses. Certaines fonctionnent d'autres non, et çà dépend de l'implémentation
Marsh Posté le 02-12-2003 à 09:34:48
J'ai honte de pas avoir pensé à [[:upper:]]
Je suis un gland.
Marsh Posté le 02-12-2003 à 09:50:07
Pas moi
J'ai appris un truc et çà me plait
Marsh Posté le 15-11-2007 à 23:48:36
Encore mieux !
Code :
|
trouvé sur nexen.
Marsh Posté le 16-11-2007 à 01:37:23
oui mais ça retourne le pourcentage de la chaine aussi, ce que ne fait pas la fonction plus haut décrite par Mara's dad.
Marsh Posté le 05-11-2003 à 15:17:13
Je voudrais pouvoir calculer en PHP le pourcentage de majuscules classiques qui se trouvent dans une chaine. Pour l'instant j'ai écris ca :
Quelqu'un aurait-il un code meilleur à proposer ?
J'avais bien pensé à stocker ma chaine en minuscule (grace à strtolower) dans une variable temporaire, et comparer les 2 chaines avec strcmp() mais c'est une fonction que je connais peu, visiblement elle retourne juste 0 ou 1 et non pas le nombre de caractères différents.