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.