Есть строка: $string = '27 лет';
Хочу чтобы в $string первая буква, не символ, была большой, в данном случае буква 'Л'.
Пробовал через ucfirst(), ну оно пытается сделать цифру 2 большой.
сие как-то неграмотно было бы. «Лет» ведь не имя собственное и не начало предложения.
Можно разбить строку на массив слов по пробелу, и у каждого слова сделать первую заглавной. Ну, или только у [1]-го элемента. Потом склеить обратно в строку через пробел.
Сергей Соколов, Это просто пример неудачный получился. Идея вообще в том, чтобы в ссылку подставлять ник пользователя, который может начинатся не с большой буквы и иметь цифры вначале. А ссылка принимает только с большой буквы слова.
jarderRek, ну так пробела нет ))
Тогда можно регулярным выражением: "начало-строки, любые-не-буквы, буква-станет-заглавной, остальная-часть-строки". Функцией preg_replace_callback()
Например, разделить строку по пробелу, затем к каждому элементу массива применить ucfirst и обратно сцепить по пробелу. Либо найти в строке все пробелы и трансформировать идущие следом за ними символы.
Вот пример со словом '2бензин2' :
<code lang="php">
$user = $_SESSION['user']; /*Тут слово '2бензин2'*/
$user = str_split($user); /*Разбиваю на массив*/
$user[1] = ucfirst($user[1]); /*Беру индекс буквы 'б'*/
$user = implode($user); /*Собираю в строку*/
</code>
Проблема в том, что если будет ''22бензин22, то индекс [1] будет уже не буква 'б', а цифра '2'.
Попробую найти позицию пробела и следующию букву сделать большой.
jarderRek, для начала - чётко и ясно сформулировать правила, по которым определять, какую букву нужно сделать большой. В словах, состоящих из букв и цифр безо всяких разделителей, эти правила с пробелом работать не будут, тут уже как-то иначе придётся определять, например, букву, перед которой идёт что-то отличное от буквы (но такое правило будет неправильно отлавливать слова с дефисом, например, так что и для дефиса тут придётся исключение делать).