ucfirst

(PHP 4, PHP 5, PHP 7)

ucfirstПреобразует первый символ строки в верхний регистр

Описание

string ucfirst ( string $str )

Возвращает строку str, в которой первый символ переведен в верхний регистр, если этот символ является буквой.

Принадлежность того или иного символа к буквенным определяется с учетом текущей локали. Это означает, что, например, в используемой по умолчанию локали "C", символ ä не будет преобразован.

Список параметров

str

Входная строка.

Возвращаемые значения

Возвращает результирующую строку.

Примеры

Пример #1 Пример использования ucfirst()

<?php
$foo 
'hello world!';
$foo ucfirst($foo);             // Hello world!

$bar 'HELLO WORLD!';
$bar ucfirst($bar);             // HELLO WORLD!
$bar ucfirst(strtolower($bar)); // Hello world!
?>

Смотрите также

  • lcfirst() - Преобразует первый символ строки в нижний регистр
  • strtolower() - Преобразует строку в нижний регистр
  • strtoupper() - Преобразует строку в верхний регистр
  • ucwords() - Преобразует в верхний регистр первый символ каждого слова в строке

Коментарии

Here is a handy function that makes the first letter of everything in a sentence upercase. I used it to deal with titles of events posted on my website ... I've added exceptions for uppercase words and lowercase words so roman numeral "IV" doesn't get printed as "iv" and words like "a" and "the" and "of" stay lowercase.

function RemoveShouting($string)
{
 $lower_exceptions = array(
        "to" => "1", "a" => "1", "the" => "1", "of" => "1"
 );
                                     
 $higher_exceptions = array(
        "I" => "1", "II" => "1", "III" => "1", "IV" => "1",
        "V" => "1", "VI" => "1", "VII" => "1", "VIII" => "1",
        "XI" => "1", "X" => "1"
 );

 $words = split(" ", $string);
 $newwords = array(); 
 
 foreach ($words as $word)
 {
        if (!$higher_exceptions[$word])
                $word = strtolower($word);
        if (!$lower_exceptions[$word])
                $word = ucfirst($word);
         array_push($newwords, $word);
 
 }
       
 return join(" ", $newwords); 
}
2003-06-08 20:02:12
http://php5.kiev.ua/manual/ru/function.ucfirst.html
In the event you sort of need multiple delimiters to apply the same action to, you can preg_replace this "second delimiter" enveloping it with your actual delimiter.
 
A for instance, would be if you wanted to use something like Lee's FormatName function in an input box designed for their full name as this script was only designed to check the last name as if it were the entire string.  The problem is that you still want support for double-barreled names and you still want to be able to support the possibility that if the second part of the double-barreled name starts with "mc", that it will still be formatted correctly.

This example does a preg_replace that surrounds the separator with your actual delimiter.  This is just a really quick alternative to writing some bigger fancier blah-blah function.  If there's a shorter, simpler way to do it, feel free to inform me.  (Emphasis on shorter and simpler because that was the whole point of this.) :D

Here's the example.  I've removed Lee's comments as not to confuse them with my own.

<?php

   
function FormatName($name=NULL)
   {
       if (empty(
$name))
           return 
false;

       
$name strtolower($name);
       
$name preg_replace("[\-]"" - ",$name); // Surround hyphens with our delimiter so our strncmp is accurate
       
if (preg_match("/^[a-z]{2,}$/i",$name))  // Simple preg_match if statement
       
{
           
           
$names_array explode(' ',$name);  // Set the delimiter as a space.
   
           
for ($i 0$i count($names_array); $i++)
           {
               if (
strncmp($names_array[$i],'mc',2) == || ereg('^[oO]\'[a-zA-Z]',$names_array[$i]))
               {
                   
$names_array[$i][2] = strtoupper($names_array[$i][2]);
               }
               
$names_array[$i] = ucfirst($names_array[$i]);
               
           }
   
           
$name implode(' ',$names_array);
           
$name preg_replace("[ \- ]""-",$name); //  Remove the extra instances of our delimiter
           
return ucwords($name);
           
       }
   }

?>
2004-04-07 23:34:49
http://php5.kiev.ua/manual/ru/function.ucfirst.html
Note: the return for this function changed in versions 4.3 when a string is passed of length 0.  In <4.2 false is returned and in >4.3 a string of length 0 is returned.

Example:

$name = ucfirst("");
var_dump($name);

$name = ucfirst("owen");
var_dump($name);

Results for <4.2:
bool(false) string(4) "Owen" 

Results for >4.3:
string(0) "" string(4) "Owen"
2004-06-21 15:14:01
http://php5.kiev.ua/manual/ru/function.ucfirst.html
Автор:
Ah, the last code were spoiled, here is the fixed one:

<?php

function uc_first($str){
   
$str[0] = strtr($str
   
"abcdefghijklmnopqrstuvwxyz".
   
"\x9C\x9A\xE0\xE1\xE2\xE3".
   
"\xE4\xE5\xE6\xE7\xE8\xE9".
   
"\xEA\xEB\xEC\xED\xEE\xEF".
   
"\xF0\xF1\xF2\xF3\xF4\xF5".
   
"\xF6\xF8\xF9\xFA\xFB\xFC".
   
"\xFD\xFE\xFF"
   
"ABCDEFGHIJKLMNOPQRSTUVWXYZ".
   
"\x8C\x8A\xC0\xC1\xC2\xC3\xC4".
   
"\xC5\xC6\xC7\xC8\xC9\xCA\xCB".
   
"\xCC\xCD\xCE\xCF\xD0\xD1\xD2".
   
"\xD3\xD4\xD5\xD6\xD8\xD9\xDA".
   
"\xDB\xDC\xDD\xDE\x9F");
    return 
$str;
}

?>

So, this function changes also other letters into uppercase, ucfirst() does only change: a-z to: A-Z.
2005-03-12 19:11:27
http://php5.kiev.ua/manual/ru/function.ucfirst.html
This is a simple code to get all the 'bad words', stored in a database, out of the text. You could use str_ireplace but since that's installed on PHP5 only, this works as well. It strtolowers the text first then places capitals with ucfirst() where it thinks a capital should be placed, at a new sentence. The previous sentence is ended by '. ' then.

<?php
function filter($text){
   
$filters=mysql_query("SELECT word,result FROM filter");
    while(
$filter=mysql_fetch_array($filters)){
       
$text=str_replace($filter[word],$filter[result],strtolower($text));
       
$parts=explode(". ",$text);
        for(
$i=0;$i<count($parts);$i++){
           
$parts[$i]=ucfirst($parts[$i]);
        }
       
$text=implode(". ",$parts);
    }
    return 
$text;
}
?>
2005-06-23 03:48:44
http://php5.kiev.ua/manual/ru/function.ucfirst.html
Автор:
Simple multi-bytes ucfirst():

<?php
function my_mb_ucfirst($str) {
   
$fc mb_strtoupper(mb_substr($str01));
    return 
$fc.mb_substr($str1);
}
?>
2005-09-29 14:05:31
http://php5.kiev.ua/manual/ru/function.ucfirst.html
Автор:
plemieux' function did not work for me without passing the encoding to every single mb function (despite ini_set('default_charset', 'utf-8') at the top of the script). This is the example that works in my application (PHP 4.3):

<?php
function my_mb_ucfirst($str$e='utf-8') {
   
$fc mb_strtoupper(mb_substr($str01$e), $e); 
    return 
$fc.mb_substr($str1mb_strlen($str$e), $e);
}
?>
2006-01-12 08:39:13
http://php5.kiev.ua/manual/ru/function.ucfirst.html
Автор:
Here is the fixed function for Turkish alphabet..

<?php

function uc_first($str){
   
$str[0] = strtr($str
   
"abcdefgh?ijklmnopqrstuvwxyz".
   
"\x9C\x9A\xE0\xE1\xE2\xE3".
   
"\xE4\xE5\xE6\xE7\xE8\xE9".
   
"\xEA\xEB\xEC\xED\xEE\xEF".
   
"\xF0\xF1\xF2\xF3\xF4\xF5".
   
"\xF6\xF8\xF9\xFA\xFB\xFC".
   
"\xFE\xFF"
   
"ABCDEFGHI?JKLMNOPQRSTUVWXYZ".
   
"\x8C\x8A\xC0\xC1\xC2\xC3\xC4".
   
"\xC5\xC6\xC7\xC8\xC9\xCA\xCB".
   
"\xCC\xCD\xCE\xCF\xD0\xD1\xD2".
   
"\xD3\xD4\xD5\xD6\xD8\xD9\xDA".
   
"\xDB\xDC\xDE\x9F");
   return 
$str;
}

?>
2006-02-26 19:28:39
http://php5.kiev.ua/manual/ru/function.ucfirst.html
Автор:
A combination of the below functions to enable ucfirst for multibyte strings in a shared hosting environment (where you can not always count on mbstring to be installed):

<?php
function my_mb_ucfirst($str$e='utf-8') {
    if (
function_exists('mb_strtoupper')) {
       
$fc mb_strtoupper(mb_substr($str01$e), $e); 
        return 
$fc.mb_substr($str1mb_strlen($str$e), $e);
    }
    else { 
       
$str utf8_decode($str);
       
$str[0] = strtr($str[0],
           
"abcdefghýijklmnopqrstuvwxyz".
           
"\x9C\x9A\xE0\xE1\xE2\xE3".
           
"\xE4\xE5\xE6\xE7\xE8\xE9".
           
"\xEA\xEB\xEC\xED\xEE\xEF".
           
"\xF0\xF1\xF2\xF3\xF4\xF5".
           
"\xF6\xF8\xF9\xFA\xFB\xFC".
           
"\xFE\xFF",
           
"ABCDEFGHÝIJKLMNOPQRSTUVWXYZ".
           
"\x8C\x8A\xC0\xC1\xC2\xC3\xC4".
           
"\xC5\xC6\xC7\xC8\xC9\xCA\xCB".
           
"\xCC\xCD\xCE\xCF\xD0\xD1\xD2".
           
"\xD3\xD4\xD5\xD6\xD8\xD9\xDA".
           
"\xDB\xDC\xDE\x9F");
        return 
utf8_encode($str);
    }
}
?>
2006-03-31 03:34:22
http://php5.kiev.ua/manual/ru/function.ucfirst.html
Автор:
This is what you would expect php to deliver if there was a built-in function named ucsentence.

function ucsentence ($string){
    $string = explode ('.', $string);
    $count = count ($string);
    for ($i = 0; $i < $count; $i++){
        $string[$i]  = ucfirst (trim ($string[$i]));
        if ($i > 0){
            $string[$i] = '&nbsp;&nbsp;' . $string[$i];
        }
    }
    $string = implode ('.', $string);
    return $string;
}
2006-09-12 09:01:20
http://php5.kiev.ua/manual/ru/function.ucfirst.html
Автор:
Some simple function for cyrillic and latin letters both:

function rucfirst($str) {
    if(ord(substr($str,0,1))<192) return ucfirst($str);
    else
    return chr(ord(substr($str,0,1))-32).substr($str,1);
}
2006-10-26 10:45:10
http://php5.kiev.ua/manual/ru/function.ucfirst.html
I made a small change. Now it takes care of points in numbers

function ucsentence ($string){
   $string = explode ('.', $string);
   $count = count ($string);
   for ($i = 0; $i < $count; $i++){
       $string[$i]  = ucfirst (trim ($string[$i]));
       if ($i > 0){
           if ((ord($string[$i]{0})<48) || (ord($string[$i]{0})>57)) {
              $string[$i] = ' ' . $string[$i];
           }   
       }
   }
   $string = implode ('.', $string);
   return $string;
}
2007-01-06 04:55:16
http://php5.kiev.ua/manual/ru/function.ucfirst.html
Автор:
@ zee: this should solve your !, ?, and any punctuations you want to add. It can probably be cleaned up a bit.

<?php

function sentence_cap($impexp$sentence_split) {
   
$textbad=explode($impexp$sentence_split);
   
$newtext = array();
    foreach (
$textbad as $sentence) {
       
$sentencegood=ucfirst($sentence);
       
$newtext[] = $sentencegood;
    }
   
$textgood implode($impexp$newtext);
    return 
$textgood;
}

$text "this is a sentence. this is another sentence! this is the fourth sentence? no, this is the fourth sentence.";
$text sentence_cap(". ",$text);
$text sentence_cap("! ",$text);
$text sentence_cap("? ",$text);

echo 
$text// This is a sentence. This is another sentence! This is the fourth sentence? No, this is the fourth sentence.

?>
2007-03-14 14:03:04
http://php5.kiev.ua/manual/ru/function.ucfirst.html
Ken and zee

One thing I would do to make this more unviersally work would be to add strtolower() around your $sentence.  Doing this will allow you to convert an all caps text block as well as an all lowercase text block.

<?php

function sentence_cap($impexp$sentence_split) {
   
$textbad=explode($impexp$sentence_split);
   
$newtext = array();
    foreach (
$textbad as $sentence) {
       
$sentencegood=ucfirst(strtolower($sentence));
       
$newtext[] = $sentencegood;
    }
   
$textgood implode($impexp$newtext);
    return 
$textgood;
}

$text "this is a sentence. this is another sentence! this is the fourth sentence? no, this is the fourth sentence.";
$text sentence_cap(". ",$text);
$text sentence_cap("! ",$text);
$text sentence_cap("? ",$text);

echo 
$text// This is a sentence. This is another sentence! This is the fourth sentence? No, this is the fourth sentence.

?>
2007-07-12 14:57:02
http://php5.kiev.ua/manual/ru/function.ucfirst.html
Автор:
@adefoor, Ken and Zee

Changing the case can only be done by understanding the text. Take for example "USA", "Sunday", "March", "I am ...", abbreviations like "prob." and so on.
2007-07-26 11:08:42
http://php5.kiev.ua/manual/ru/function.ucfirst.html
Inspired by the lcfirst function a simple mb_lcfirst to cope with multibyte strings:

<?php
function mb_lcfirst($str$enc null)
{
  if(
$enc === null$enc mb_internal_encoding();
  return 
mb_strtolower(mb_substr($str01$enc), $enc).mb_substr($str1mb_strlen($str$enc), $enc);
}
?>
2008-02-11 05:31:41
http://php5.kiev.ua/manual/ru/function.ucfirst.html
Автор:
Here's a function to capitalize segments of a name, and put the rest into lower case. You can pass the characters you want to use as delimiters.

i.e. <?php echo nameize("john o'grady-smith"); ?>

returns John O'Grady-Smith

<?php

function nameize($str,$a_char = array("'","-"," ")){   
   
//$str contains the complete raw name string
    //$a_char is an array containing the characters we use as separators for capitalization. If you don't pass anything, there are three in there as default.
   
$string strtolower($str);
    foreach (
$a_char as $temp){
       
$pos strpos($string,$temp);
        if (
$pos){
           
//we are in the loop because we found one of the special characters in the array, so lets split it up into chunks and capitalize each one.
           
$mend '';
           
$a_split explode($temp,$string);
            foreach (
$a_split as $temp2){
               
//capitalize each portion of the string which was separated at a special character
               
$mend .= ucfirst($temp2).$temp;
                }
           
$string substr($mend,0,-1);
            }   
        }
    return 
ucfirst($string);
    }

?>
2008-02-20 05:48:10
http://php5.kiev.ua/manual/ru/function.ucfirst.html
I believe that mb_ucfirst will be soon added in PHP, but for now this could be useful
<?php

if (!function_exists('mb_ucfirst') && function_exists('mb_substr')) {
    function 
mb_ucfirst($string) {
       
$string mb_strtoupper(mb_substr($string01)) . mb_substr($string1);
        return 
$string;
    }
}

?>

it also check is mb support enabled or not
2008-06-29 18:01:13
http://php5.kiev.ua/manual/ru/function.ucfirst.html
This is what I use for converting strings to sentence case:

<?php
function sentence_case($string) {
   
$sentences preg_split('/([.?!]+)/'$string, -1PREG_SPLIT_NO_EMPTY|PREG_SPLIT_DELIM_CAPTURE);
   
$new_string '';
    foreach (
$sentences as $key => $sentence) {
       
$new_string .= ($key 1) == 0?
           
ucfirst(strtolower(trim($sentence))) :
           
$sentence.' ';
    }
    return 
trim($new_string);
}

print 
sentence_case('HMM. WOW! WHAT?');

// Outputs: "Hmm. Wow! What?"
?>
2008-11-09 19:10:45
http://php5.kiev.ua/manual/ru/function.ucfirst.html
For some reason this worked for me.

Mac OS 10.5.1 
PHP 5.2.6

<?php
   
/**
     * ucfirst UTF-8 aware function
     *
     * @param string $string
     * @return string
     * @see http://ca.php.net/ucfirst
     */
   
function my_ucfirst($string$e ='utf-8') {
        if (
function_exists('mb_strtoupper') && function_exists('mb_substr') && !empty($string)) {
           
$string mb_strtolower($string$e);
           
$upper mb_strtoupper($string$e);
           
preg_match('#(.)#us'$upper$matches);
           
$string $matches[1] . mb_substr($string1mb_strlen($string$e), $e);
        } else {
           
$string ucfirst($string);
        }
        return 
$string;
    }
?>

Svetoslav Marinov
http://slavi.biz
2008-11-20 09:40:29
http://php5.kiev.ua/manual/ru/function.ucfirst.html
Автор:
Simple function for use ucfirst with utf-8 encoded cyrylic text

<?php
   
public function capitalize_first($str) {
       
$line iconv("UTF-8""Windows-1251"$str); // convert to windows-1251
       
$line ucfirst($line);
       
$line iconv("Windows-1251""UTF-8"$line); // convert back to utf-8
       
       
return $line;
    }
?>
2009-07-30 07:39:08
http://php5.kiev.ua/manual/ru/function.ucfirst.html
Автор:
For lithuanian text with utf-8 encoding I use two functions (thanks [mattalexxpub at gmail dot com] and Svetoslav Marinov)

<?php
function my_ucfirst($string$e ='utf-8') {
    if (
function_exists('mb_strtoupper') && function_exists('mb_substr') && !empty($string)) {
       
$string mb_strtolower($string$e);
       
$upper mb_strtoupper($string$e);
           
preg_match('#(.)#us'$upper$matches);
           
$string $matches[1] . mb_substr($string1mb_strlen($string$e), $e);
    }
    else {
       
$string ucfirst($string);
    }
    return 
$string;
}

function 
sentence_case($string) {
   
$sentences preg_split('/([.?!]+)/'$string, -1PREG_SPLIT_NO_EMPTY|PREG_SPLIT_DELIM_CAPTURE);
   
$new_string '';
    foreach (
$sentences as $key => $sentence) {
       
$new_string .= ($key 1) == 0?
           
my_ucfirst(strtolower(trim($sentence))) :
           
$sentence.' '
    }
    return 
trim($new_string);
}
?>
2009-09-26 20:18:45
http://php5.kiev.ua/manual/ru/function.ucfirst.html
If someone looks for the equivalent on Oracle DB, here it is: INITCAP. Hope this helps!
2010-01-22 04:22:29
http://php5.kiev.ua/manual/ru/function.ucfirst.html
for anyone wanting to ucfirst each word in a sentence this works for me:

<?php
function ucfirst_sentence($str)
{
    return 
preg_replace('/\b(\w)/e''strtoupper("$1")'$str);
}
?>
2010-04-11 22:08:00
http://php5.kiev.ua/manual/ru/function.ucfirst.html
Автор:
if you want to ucfirst for utf8 try this one:

<?php
function ucfirst_utf8($stri){
 if(
$stri{0}>="\xc3")
     return ((
$stri{1}>="\xa0")?
     (
$stri{0}.chr(ord($stri{1})-32)):
     (
$stri{0}.$stri{1})).substr($stri,2);
 else return 
ucfirst($stri);
}
?>

It is quick, not language (but utf8) dependend and does not use any mb-functions such as mb_ucfirst.
2011-05-10 16:53:38
http://php5.kiev.ua/manual/ru/function.ucfirst.html
Turkish solution:

<?php
mb_internal_encoding
("UTF-8");
mb_regex_encoding("UTF-8");

function 
tr_ilkbuyuk($text)
{
   
$text str_replace("I","ı",$text);
   
$text mb_strtolower($text'UTF-8');
   
    if(
$text[0] == "i")
       
$tr_text "İ".substr($text1);
    else
       
$tr_text mb_convert_case($textMB_CASE_TITLE"UTF-8");
   
    return 
trim($tr_text);
}

function 
tr_ucwords($text)
{
   
$p explode(" ",$text);
    if(
is_array($p))
    {
       
$tr_text "";
        foreach(
$p AS $item)
           
$tr_text .= " ".tr_ilkbuyuk($item);
           
        return 
trim($tr_text);
    }
    else
        return 
tr_ilkbuyuk($text);
}

$deger "ıişllşlsdg";

echo 
tr_ucwords($deger);

?>
2011-08-17 19:31:16
http://php5.kiev.ua/manual/ru/function.ucfirst.html
A proper Turkish solution;

<?php
function ucfirst_turkish($str) {
   
$tmp preg_split("//u"$str2PREG_SPLIT_NO_EMPTY);
    return 
mb_convert_case(
       
str_replace("i""İ"$tmp[0]), MB_CASE_TITLE"UTF-8").
       
$tmp[1];
}

$str "iyilik güzelLİK";
echo 
ucfirst($str) ."\n";   // Iyilik güzelLİK
echo ucfirst_turkish($str); // İyilik güzelLİK
?>
2012-02-27 18:41:45
http://php5.kiev.ua/manual/ru/function.ucfirst.html
Автор:
Simple but workable solution:

<?php
mb_internal_encoding
("UTF-8");  // before calling the function 

function utf8_ucfirst($str){ 
   
preg_match_all("~^(.)(.*)$~u"$str$arr);
    return 
mb_strtoupper($arr[1][0]).$arr[2][0];
    }
?>
2012-10-05 19:14:18
http://php5.kiev.ua/manual/ru/function.ucfirst.html
Implementation of multi-bytes ucfirst for "multiword"-strings (module mbstring is required):

<?php

public static function ucfirst($str)
{
   
$str mb_strtolower($str);
   
$words preg_split('/\b/u'$str, -1PREG_SPLIT_NO_EMPTY);
    foreach (
$words as $word) {
       
$ucword mb_strtoupper(mb_substr($word01)) . mb_substr($word1);
       
$str str_replace($word$ucword$str);
    }
    return 
$str;
}

?>
2013-12-05 12:32:42
http://php5.kiev.ua/manual/ru/function.ucfirst.html
My version, converst first letter of the first word in the string to uppercase

public function mb_ucfirst($str) {
        $aParts = explode(" ",$str);
        $firstWord = mb_convert_case($aParts[0],MB_CASE_TITLE,"UTF-8");
        unset($aParts[0]);

        return $firstWord." ".implode(" ",$aParts);
    }
2014-05-16 09:34:41
http://php5.kiev.ua/manual/ru/function.ucfirst.html
Improved method of capitalizing first characters of sentences.
The first two manipulations (double spaces & all caps) are optional so can be removed without harm.

<?php
// return string with first letters of sentences capitalized
function ucsentence($str) {
  if (
$str) { // input
   
$str preg_replace('/'.chr(32).chr(32).'+/'chr(32), $str); // recursively replaces all double spaces with a space
   
if (($x substr($str010)) && ($x == strtoupper($x))) $str strtolower($str); // sample of first 10 chars is ALLCAPS so convert $str to lowercase; if always done then any proper capitals would be lost
   
$na = array('. ''! ''? '); // punctuation needles
   
foreach ($na as $n) { // each punctuation needle
     
if (strpos($str$n) !== false) { // punctuation needle found
       
$sa explode($n$str); // split
       
foreach ($sa as $s$ca[] = ucfirst($s); // capitalize
       
$str implode($n$ca); // replace $str with rebuilt version
       
unset($ca); //  clear for next loop
     
}
    }
    return 
ucfirst(trim($str)); // capitalize first letter in case no punctuation needles found
 
}
}
?>

"heLLo EarthLing!" >> "HeLLo EarthLing!"
"I'M MOSTLY. caps!  " >> "I'm mostly. Caps!"
"ALLCAPS" >> "Allcaps"
"i haVe neST.ed punct,u.ation!  sp    A  c es.  and CAPs..  " >> "I haVe neST.ed punct,u.ation! Sp A c es. And CAPs.."
2017-02-22 09:46:37
http://php5.kiev.ua/manual/ru/function.ucfirst.html
Автор:
Format the input string:

<?php

function ucsentences($string){
   
$parts preg_split('/([^\.\!\?;]+[\.\!\?;"]+)/'strtolower($string), (-1), PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY); 
   
$r '';
    foreach(
$parts as $key=>$sentence){
       
$r .= ucfirst(trim($sentence)) . ' ';
    }
   
$r preg_replace('/\bi\b/''I'$r);
   
$r preg_replace_callback('/("[a-z])/', function($m){ return strtoupper($m[0]);}, $r);
    return 
rtrim($r);
}

$str 'i\'m not sure. if this is good enough, but i thought: "hey, who know\'s. maybe i am right."';

?>
Outputs:
I'm not sure. If this is good enough, but I thought: "Hey, who know's. Maybe I am right."
2017-08-23 03:48:26
http://php5.kiev.ua/manual/ru/function.ucfirst.html
here is how mb_ucfirst should be implemented in userland

<?php

function mb_ucfirst(string $strstring $encoding null): string
{
    if (
$encoding === null) {
       
$encoding mb_internal_encoding();
    }
    return 
mb_strtoupper(mb_substr($str01$encoding), $encoding) . mb_substr($str1null$encoding);
}
?>

(when i wrote this comment, everybody else's attempt got it wrong for one reason or another, for example: some don't allow you to specify encoding, and some defaulted to utf-8 instead of defaulting to mb_internal_encoding() )
2019-11-18 14:59:20
http://php5.kiev.ua/manual/ru/function.ucfirst.html
Автор:
Using this function for Turkish language is won't work because of multi-byte characters. But you can use some tricks:

<?php
function ucfirst_tr($str) {
   
$trMap = ['Ğ'=>'ğ','Ü'=>'ü','Ş'=>'ş','İ'=>'i','Ö'=>'ö','Ç'=>'ç','I'=>'ı'];
   
$str mb_strtolower(strtr($str$trMap));
   
$first mb_substr($str01);
   
$first strtr($firstarray_flip($trMap));
   
$first mb_strtoupper($first);
    return 
$first mb_substr($str1);
}
?>
2020-08-31 13:39:05
http://php5.kiev.ua/manual/ru/function.ucfirst.html

    Поддержать сайт на родительском проекте КГБ