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

WRInaute accro
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:
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
 
WRInaute occasionnel
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:
; 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
 
WRInaute accro
Merci beaucoup. J'ai testé :
Code:
if(mb_substr($string,0,1,'UTF-8') == "a") echo "ok";
Mais ça ne donne rien.
 
WRInaute occasionnel
aie, et que renvoie un

Code:
echo $string
puis un
Code:
echo substr($string, 0, 1);
?

histoire de voir la chaine $string en entier et ce que retourne le substr.
 
WRInaute accro
Et bien comme dit au début
echo substr($string, 0, 1);
renvoie : rien du tout

echo $tring;
renvoie "architecte"
 
WRInaute occasionnel
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:
<?php
$string="architecte";
echo substr($string, 0, 1);
?>

est ce que ça fonctionne?
 
WRInaute accro
en effet tyv désolé je pensais l'avoir dit.

UsagiYojimbo a dit:
Et un
Code:
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);
?>
 
WRInaute accro
tyv a dit:
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:
<?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.
 
WRInaute accro
Sur et certain que ça ne fonctionne pas pour les caractères accentués, mais cette chaine ne peut pas en avoir ;)
 
WRInaute impliqué
Sans doute parce que les caractères accentués sont encodés en une chaine de plusieurs caractères en UTF8, non ?
 
Discussions similaires
Haut