2010-05-10 3 views

Répondre

9

Il suffit de faire:

$str = "STACKoverflow"; 
$str[0] = strtolower($str[0]); // prints sTACKoverflow 

et si vous utilisez >=5.3 que vous pouvez faire:

$str = lcfirst($str); 
16

Essayez

  • lcfirst - Faire le premier caractère en minuscule

et PHP < 5.3 ajouter ceci dans le cadre global d'une chaîne:

if (!function_exists('lcfirst')) { 

    function lcfirst($str) 
    { 
     $str = is_string($str) ? $str : ''; 
     if(mb_strlen($str) > 0) { 
      $str[0] = mb_strtolower($str[0]); 
     } 
     return $str; 
    } 
} 

L'avantage de ce qui précède sur juste strolower en cas de besoin est que votre code PHP va simplement passer à la fonction native une fois que vous note à PHP5.3

Mis à jour après les commentaires. La fonction vérifie maintenant s'il existe réellement un premier caractère dans la chaîne et s'il s'agit d'un caractère alphabétique dans les paramètres régionaux en cours. Il est également conscient multi-octets maintenant.

+1

+1 mais la coutume lcfirst fonction devrait éventuellement vérifier que la chaîne est de 0 longueur. Il évite l'avis qui se produit quand il est. – Yacoby

+1

vous devriez utiliser mb_strlen au lieu de strlen car strlen compte mal les caractères unicode. (c'est-à-dire strlen ("abcä") == 5, mb_strlen ("abcä") == 4) – dbemerlin

1

utilisation icfirst()

<?php 
$foo = 'HelloWorld'; 
$foo = lcfirst($foo);    // helloWorld 

$bar = 'HELLO WORLD!'; 
$bar = lcfirst($bar);    // hELLO WORLD! 
$bar = lcfirst(strtoupper($bar)); // hELLO WORLD! 
?> 
0

Pour multioctets première lettre de ficelle aucun des ci-dessus les exemples fonctionneront. Dans ce cas, vous devez utiliser:

function mb_lcfirst($string) 
{ 
    return mb_strtolower(mb_substr($string,0,1)) . mb_substr($string,1); 
} 
Questions connexes