2010-05-10 35 views
3

我不能使用strtolower,因爲它會影響所有字符。我應該使用某種正則表達式嗎?如何在PHP中使字符串小寫的第一個字符?

我得到一個字符串,它是一個產品代碼,我想用這個產品代碼作爲一個搜索關鍵字在第一個字母變成小寫字母的不同位置。

回答

9

只是別:

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

,如果你正在使用>=5.3你可以這樣做:

$str = lcfirst($str); 
16

嘗試

  • lcfirst - 做一個字符串的第一個字符小寫

和PHP < 5.3加入到全球範圍內的:

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; 
    } 
} 

上述超過的優點只需要在您需要的時候,您的PHP代碼將在您啓動後簡單切換到本機功能等級到PHP5.3

評論後更新。該函數現在檢查字符串中是否實際存在第一個字符,並且它是當前語言環境中的字母字符。現在也知道多字節。

+1

+1但自定義lcfirst功能應儘可能檢查字符串不爲0的長度。它避免了現在發生的通知。 – Yacoby 2010-05-10 10:26:38

+1

您應該使用mb_strlen而不是strlen,因爲strlen不正確地計算unicode字符。 (即strlen(「abcä」)== 5,mb_strlen(「abcä」)== 4) – dbemerlin 2010-05-10 10:58:20

1

使用icfirst()

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

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

對於字符串沒有以上的多字節第一個字母例子將工作。 在這種情況下,你應該使用:

function mb_lcfirst($string) 
{ 
    return mb_strtolower(mb_substr($string,0,1)) . mb_substr($string,1); 
} 
相關問題