PHP Compter les caractères et accents

gcvoiron
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 494
Inscription: 19 Oct 2005

PHP Compter les caractères et accents

Message le Jeu Mar 27, 2008 20:27

Bonsoir,

Je souhaite compter le nombre de caractères d'une chaine.
Le problème est qu'avec strlen, si ma chaine est "c@3s$szédeee", le nombre retourné est 20 alors que je voudrais récupérer 12 caractères... Je n'ai pas résolu mon problème en utilisant mb_strlen, peut-être que je n'avais pas mis le bon encodage ?
Connaissez-vous une fonction comptant pour un caractère ceux étant sur plusieurs octets ?

Merci d'avance, Guillaume.

tonguide
WRInaute passionné
WRInaute passionné
 
Messages: 1406
Inscription: 28 Nov 2003

Message le Jeu Mar 27, 2008 20:36

Remplaces les accents, compte ensuite ?

gcvoiron
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 494
Inscription: 19 Oct 2005

Message le Jeu Mar 27, 2008 20:43

Merci de ta réponse, je pense que c'est ce que je ferai en dernier recours... Il doit bien y avoir une solution ! :roll:


phpmikedu83
WRInaute passionné
WRInaute passionné
 
Messages: 1281
Inscription: 6 Aoû 2005

Message le Jeu Mar 27, 2008 20:47

gcvoiron a écrit:Merci de ta réponse, je pense que c'est ce que je ferai en dernier recours... Il doit bien y avoir une solution ! :roll:


Qu'utilises tu comme charset, c'est important de le savoir...

gcvoiron
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 494
Inscription: 19 Oct 2005

Message le Jeu Mar 27, 2008 20:51

Mes pages sont en iso-8859-1...


YoyoS
WRInaute accro
WRInaute accro
 
Messages: 3835
Inscription: 14 Sep 2006

Message le Jeu Mar 27, 2008 21:16

Tu trouveras ton bonheur sur la doc: http://www.php.net/manual/fr/function.strlen.php

Faut toujours penser à y jeter un oeil avant de poser une question, une vraie mine d'or ! 8)


phpmikedu83
WRInaute passionné
WRInaute passionné
 
Messages: 1281
Inscription: 6 Aoû 2005

Message le Jeu Mar 27, 2008 21:55

gcvoiron a écrit:Mes pages sont en iso-8859-1...


Dans ta réponse je sens que t'entrevois le fond du problème...

Tu précises : "mes pages", ce que je comprends, c'est qu'il s'agit des déclarations dans le head de tes fichiers html...

Mais d'où sortent ces chaînes avec accents, d'une base de donnée ? elle aussi en iso ?...

gcvoiron
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 494
Inscription: 19 Oct 2005

Message le Jeu Mar 27, 2008 21:55

YoyoS a écrit:Tu trouveras ton bonheur sur la doc: http://www.php.net/manual/fr/function.strlen.php

Faut toujours penser à y jeter un oeil avant de poser une question, une vraie mine d'or ! 8)

J'ai lu et relu la doc... Mais rien trouvé concernant les caractères multi-octets.

gcvoiron
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 494
Inscription: 19 Oct 2005

Message le Jeu Mar 27, 2008 22:09

phpmikedu83 a écrit:
gcvoiron a écrit:Mes pages sont en iso-8859-1...


Dans ta réponse je sens que t'entrevois le fond du problème...

Tu précises : "mes pages", ce que je comprends, c'est qu'il s'agit des déclarations dans le head de tes fichiers html...

Mais d'où sortent ces chaînes avec accents, d'une base de donnée ? elle aussi en iso ?...

Ces chaines de caractères viennent d'un formulaire. C'est pour vérifier que le mot de passe est comprit en X et Y caractères.


phpmikedu83
WRInaute passionné
WRInaute passionné
 
Messages: 1281
Inscription: 6 Aoû 2005

Message le Jeu Mar 27, 2008 22:16

gcvoiron a écrit:Ces chaines de caractères viennent d'un formulaire. C'est pour vérifier que le mot de passe est comprit en X et Y caractères.


T'as dû rater quelque chose quelque part car ton problème sens fortement l'encodage caractère hétérogène ;-)
Y'a pas que de l'iso à mon avis...

gcvoiron
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 494
Inscription: 19 Oct 2005

Message le Jeu Mar 27, 2008 22:30

phpmikedu83 a écrit:
gcvoiron a écrit:Ces chaines de caractères viennent d'un formulaire. C'est pour vérifier que le mot de passe est comprit en X et Y caractères.


T'as dû rater quelque chose quelque part car ton problème sens fortement l'encodage caractère hétérogène ;-)
Y'a pas que de l'iso à mon avis...

Effectivement, j'avais bien une erreur... Je suis passé de Gedit à Quanta++ et il enregistrait mes pages en UTF...
Merci à tous pour l'aide !

:wink:

jarreweb
WRInaute discret
WRInaute discret
 
Messages: 192
Inscription: 12 Sep 2003

Message le Ven Mar 28, 2008 9:59

éventuellement un strlen sur un utf8_decode
Code: Tout sélectionner
strlen(utf8_decode($ma_chaine))


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3974
Inscription: 16 Nov 2004

Re: PHP Compter les caractères et accents

Message le Ven Mar 28, 2008 12:57

gcvoiron a écrit:Connaissez-vous une fonction comptant pour un caractère ceux étant sur plusieurs octets ?

Merci d'avance, Guillaume.


http://www.phpwact.org/php/i18n/charsets

Code: Tout sélectionner
//Checking a Strings Length:
if ( !preg_match('/^\w{,10}$/u', $firstname) ) {
   die($firstname . ' is too long');
}


YoyoS
WRInaute accro
WRInaute accro
 
Messages: 3835
Inscription: 14 Sep 2006

Message le Ven Mar 28, 2008 16:50

tout ça était dans la doc :p


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3974
Inscription: 16 Nov 2004

Message le Sam Mar 29, 2008 0:40

c'est un + l'utilisation du métacaractère world \w si l'on veut compter les caractères unique d'une chaine en UTF8.. et c'est pas expliquer dans la doc officielle php.

PHP Compter les caractères et accents

Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités