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
4 answers
ucfirst()
смотрит только на первый символ, поэтому сначала вы должны преобразовать его в нижний регистр.
Используйте это:
$produtto = 'APPLE';
echo ucfirst(strtolower($produtto));
//output: Apple
В первом случае я предполагаю, что вам сначала нужно будет перевести их в нижний регистр с помощью strtolower
, а затем использовать ucfirst
в строке.
Прочитайте руководство! 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!
Http://php.net/manual/en/function.mb-convert-case.php
MB_CASE_TITLE - это не то же самое, что ucfirst(). ucfirst интересует только первый символ. MB_CASE_TITLE касается всей строки и делает ее строкой с начальной буквы.