ucfirst не работает должным образом?


Вероятно, я упускаю что-то действительно очевидное.

При преобразовании связки строк перед вставкой их в массив я заметил, что некоторые строки отличаются друг от друга из-за того, что первый символ в верхнем регистре или нет. Затем я решил использовать ucfirst, чтобы сделать первый символ прописным, но, похоже, это работает неправильно, я осмотрелся в Интернете, пытаясь понять, почему это происходит, но мне не повезло.

$produtto = 'APPLE';
echo ucfirst($produtto);
//output: APPLE

Если я использую вместо этого mb_convert_case

$produtto = 'APPLE';
echo mb_convert_case($produtto, MB_CASE_TITLE, "UTF-8");
//Output: Apple
Author: Fabio, 2013-06-20

4 answers

ucfirst() смотрит только на первый символ, поэтому сначала вы должны преобразовать его в нижний регистр.

Используйте это:

$produtto = 'APPLE';
echo ucfirst(strtolower($produtto));
//output: Apple
 14
Author: MisterBla, 2016-04-23 09:41:03

В первом случае я предполагаю, что вам сначала нужно будет перевести их в нижний регистр с помощью strtolower, а затем использовать ucfirst в строке.

 1
Author: silkfire, 2013-06-20 13:42:46

Прочитайте руководство! APPLE = верхний регистр.. так что ucfirst ничего не делает.

Www.php.net/ucfirst

$foo = 'hello world!';
$foo = ucfirst($foo);             // Hello world!

$bar = 'HELLO WORLD!';
$bar = ucfirst($bar);             // HELLO WORLD!
$bar = ucfirst(strtolower($bar)); // Hello world!
 0
Author: Garytje, 2013-06-20 13:42:13

Http://php.net/manual/en/function.mb-convert-case.php

MB_CASE_TITLE - это не то же самое, что ucfirst(). ucfirst интересует только первый символ. MB_CASE_TITLE касается всей строки и делает ее строкой с начальной буквы.

 0
Author: Richard A Quadling, 2014-12-12 10:01:24