Récupérer la première lettre d'un mot en PHP... et UTF-8


milkiway
WRInaute accro
WRInaute accro
 
Messages: 4910
Inscription: 3 Fév 2004

Récupérer la première lettre d'un mot en PHP... et UTF-8

Message le Mar Avr 06, 2010 19:06

Bonjour,

J'ai ceci qui fonctionne parfaitement sur un site encodé en ASCII mais sur mon site en développement en UTF-8, ça ne fonctionne pas.

Code: Tout sélectionner
substr($string,0,1) == "a"

En simple, je veux juste connaître la première lettre du mot contenu dans $string.

Savez vous comment faire ?

Merci


tyv
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 329
Inscription: 6 Jan 2006

Re: Récupérer la première lettre d'un mot en PHP... et UTF-8

Message le Mar Avr 06, 2010 19:55

il faudrait surement utiliser la bibliotheque mbstring soit en utilisant les fonctions équivalentes (mb_substr par exemple) soit en indiquant directement dans la conf php d'utiliser mbstring pour ces fonctions:
Dans la conf php par defaut sur une ubuntu avec php installé via les dépots par exemple, les paramètres sur mbstring sont commentés:
Code: Tout sélectionner
; overload(replace) single byte functions by mbstring functions.
; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(),
; etc. Possible values are 0,1,2,4 or combination of them.
; For example, 7 for overload everything.
; 0: No overload
; 1: Overload mail() function
; 2: Overload str*() functions
; 4: Overload ereg*() functions
;mbstring.func_overload = 0


milkiway
WRInaute accro
WRInaute accro
 
Messages: 4910
Inscription: 3 Fév 2004

Re: Récupérer la première lettre d'un mot en PHP... et UTF-8

Message le Mar Avr 06, 2010 20:17

Merci beaucoup. J'ai testé :
Code: Tout sélectionner
if(mb_substr($string,0,1,'UTF-8') == "a") echo "ok";

Mais ça ne donne rien.


tyv
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 329
Inscription: 6 Jan 2006

Re: Récupérer la première lettre d'un mot en PHP... et UTF-8

Message le Mar Avr 06, 2010 20:27

aie, et que renvoie un

Code: Tout sélectionner
echo $string

puis un
Code: Tout sélectionner
echo substr($string, 0, 1);
?

histoire de voir la chaine $string en entier et ce que retourne le substr.


milkiway
WRInaute accro
WRInaute accro
 
Messages: 4910
Inscription: 3 Fév 2004

Re: Récupérer la première lettre d'un mot en PHP... et UTF-8

Message le Mar Avr 06, 2010 20:30

Et bien comme dit au début
echo substr($string, 0, 1);
renvoie : rien du tout

echo $tring;
renvoie "architecte"


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 8579
Inscription: 23 Nov 2005

Re: Récupérer la première lettre d'un mot en PHP... et UTF-8

Message le Mar Avr 06, 2010 20:34

Et un
Code: Tout sélectionner
echo $string[0]
?


tyv
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 329
Inscription: 6 Jan 2006

Re: Récupérer la première lettre d'un mot en PHP... et UTF-8

Message le Mar Avr 06, 2010 20:37

bein non c'est pas précisé au début :) .
Sinon c'est vraiment curieux car c'est même pas sur un caractère accentué...

si dans une nouvelle page, tu ne mets que le code
Code: Tout sélectionner
<?php
$string="architecte";
echo substr($string, 0, 1);
?>


est ce que ça fonctionne?


milkiway
WRInaute accro
WRInaute accro
 
Messages: 4910
Inscription: 3 Fév 2004

Re: Récupérer la première lettre d'un mot en PHP... et UTF-8

Message le Mar Avr 06, 2010 20:47

en effet tyv désolé je pensais l'avoir dit.

UsagiYojimbo a écrit:Et un
Code: Tout sélectionner
echo $string[0]
?

Je vois que nous avons tous les mêmes idées. Ce code ne renvoie rien, j'avais testé.

Truc de fou non ?

Je teste ça demain, j'y ai même pas pensé.
Merci
<?php
$string="architecte";
echo substr($string, 0, 1);
?>

Rod la Kox
WRInaute accro
WRInaute accro
 
Messages: 3253
Inscription: 24 Juin 2008

Re: Récupérer la première lettre d'un mot en PHP... et UTF-8

Message le Mar Avr 06, 2010 21:06

mb_substr fonctionne obligatoirement à moins d'une erreur ailleurs.


nza2k
WRInaute impliqué
WRInaute impliqué
 
Messages: 771
Inscription: 16 Jan 2004

Re: Récupérer la première lettre d'un mot en PHP... et UTF-8

Message le Mer Avr 07, 2010 7:55

Et en jouant au préalable avec utf8_decode() ?


milkiway
WRInaute accro
WRInaute accro
 
Messages: 4910
Inscription: 3 Fév 2004

Re: Récupérer la première lettre d'un mot en PHP... et UTF-8

Message le Mer Avr 07, 2010 16:47

tyv a écrit:bein non c'est pas précisé au début :) .
Sinon c'est vraiment curieux car c'est même pas sur un caractère accentué...

si dans une nouvelle page, tu ne mets que le code
Code: Tout sélectionner
<?php
$string="architecte";
echo substr($string, 0, 1);
?>


est ce que ça fonctionne?

Oui, et c'est pas étonnant....... Comme d'habitude une erreur stupide. Désolé de vous avoir fait perdre du temps, mon appel contenait fonction($sting); il manquait le "r" ... :x

Et d'ailleurs, substr fonctionne sans souci, même sur de 'UTF-8 en tout cas pour cet usage.


medium69
WRInaute passionné
WRInaute passionné
 
Messages: 2485
Inscription: 7 Mai 2005

Re: Récupérer la première lettre d'un mot en PHP... et UTF-8

Message le Mer Avr 07, 2010 17:02

milkiway a écrit:Et d'ailleurs, substr fonctionne sans souci, même sur de 'UTF-8 en tout cas pour cet usage.


Pas certain pour les caractères accentués ;)


milkiway
WRInaute accro
WRInaute accro
 
Messages: 4910
Inscription: 3 Fév 2004

Re: Récupérer la première lettre d'un mot en PHP... et UTF-8

Message le Mer Avr 07, 2010 17:13

Sur et certain que ça ne fonctionne pas pour les caractères accentués, mais cette chaine ne peut pas en avoir ;)


nza2k
WRInaute impliqué
WRInaute impliqué
 
Messages: 771
Inscription: 16 Jan 2004

Re: Récupérer la première lettre d'un mot en PHP... et UTF-8

Message le Mer Avr 07, 2010 19:09

Sans doute parce que les caractères accentués sont encodés en une chaine de plusieurs caractères en UTF8, non ?


milkiway
WRInaute accro
WRInaute accro
 
Messages: 4910
Inscription: 3 Fév 2004

Re: Récupérer la première lettre d'un mot en PHP... et UTF-8

Message le Mer Avr 07, 2010 19:46

Oui c'est bien pour ça ;)

Récupérer la première lettre d'un mot en PHP... et UTF-8

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 1 invité