Comment vérifier si la lettre est supérieure ou inférieure en PHP?

j'ai des textes en UTF-8 avec des caractères diacritiques, et je voudrais vérifier si la première lettre de ce texte est en majuscules ou en minuscules. Comment faire cela?

32
demandé sur Tomasz Smykowski 2010-05-12 02:29:59

9 réponses

function starts_with_upper($str) {
    $chr = mb_substr ($str, 0, 1, "UTF-8");
    return mb_strtolower($chr, "UTF-8") != $chr;
}

Notez que mb_substr est nécessaire d'isoler correctement le premier caractère.

39
répondu Artefacto 2010-05-11 22:42:19

Utiliser ctype_upper pour vérifier les majuscules:

$a = array("Word", "word", "wOrd");

foreach($a as $w)
{
    if(ctype_upper($w{0}))
    {
        print $w;
    }
}
23
répondu Eugen 2012-01-16 09:36:11

Essayé ?

$str = 'the text to test';
if($str{0} === strtoupper($str{0})) {
   echo 'yepp, its uppercase';
}
else{
   echo 'nope, its not upper case';
}
11
répondu Vidar Vestnes 2010-05-11 22:32:21

je n'ai pas envie de numéros et d'autres pour être un haut de char, donc j'utilise:

if(preg_match('/[A-Z]$/',$char)==true)
{
   // this must be an upper char
   echo $char
}
5
répondu Dimmen 2012-01-16 09:36:27
echo $char < 'a' ? 'uppercase' : 'lowercase';

Lorsqu'un caractère string est moulé en entier, il est évalué à son numéro ASCII. Comme vous le savez dans la table ASCII d'abord il y a quelques caractères de contrôle et d'autres. Puis les lettres majuscules de l'alphabet Latin. Et puis les lettres minuscules de l'alphabet Latin. Ainsi, vous pouvez facilement vérifier si le code d'une lettre est plus petit ou plus grand que le petit caractère latin a.

BTW c'est autour de deux fois plus rapide qu'une solution avec des expressions régulières.

5
répondu Haralan Dobrev 2013-05-14 09:59:37

notez que PHP fournit le ctype famille ctype_upper.

vous devez configurer la locale correctement via setLocale () le premier à le faire fonctionner avec UTF-8.

Voir le commentaire ctype_alpha par exemple.

Utilisation:

if ( ctype_upper( $str[0] )) {
    // deal with 1st char of $str is uppercase
}
4
répondu Ring Ø 2014-03-26 15:08:56

Qu'en est juste:

if (ucfirst($string) == $string) {dosomething();}
2
répondu Tony 2011-07-21 03:06:09
if(ctype_upper(&value)){
    echo 'uppercase';
}
else {
    echo 'not upper case';
}
2
répondu Sumith Harshan 2013-01-19 11:22:44

Si vous voulez, avec une belle fonction, j'ai utilisé ceci:

function _is_upper ($in_string)
{
    return($in_string === strtoupper($in_string) ? true : false);
}

alors il suffit d'appeler..

if (_is_upper($mystring))
{
  // Do....
}
1
répondu Kver 2011-07-29 20:27:06