[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Преобразование первой буквы в заглавную
segazav
После преобразования в строке первой буквы в заглавную функцией


<?php
if (!function_exists('mb_ucfirst') && extension_loaded('mbstring'))
{
/**
* mb_ucfirst - преобразует первый символ в верхний регистр
*
@param string $str - строка
*
@param string $encoding - кодировка, по-умолчанию utf-8
*
@return string
*/

function mb_ucfirst($str, $encoding='utf-8')
{
$str = mb_ereg_replace('^[\ ]+', '', $str);
$str = mb_strtoupper(mb_substr($str, 0, 1, $encoding), $encoding).
mb_substr($str, 1, mb_strlen($str), $encoding);
return $str;
}
}

?>



Получается следующая строка: П� еоб� азование пе� вой б� кв� в заглавн� �

В чем причина и как исправить?
Эли4ка
Попробуйте так:
/**
* Uppercase first letter. Working with multi-byte encodings.
*
*
@param $str
*
@param string $encoding
*
@return string
*/

function upFirstLetter($str, $encoding = 'UTF-8')
{
return mb_strtoupper(mb_substr($str, 0, 1, $encoding), $encoding)
.
mb_substr($str, 1, null, $encoding);
}

echo upFirstLetter('дом'); // выведет "Дом"
segazav
Так вообще остается только первая заглавная буква, все остальное после нее удаляется
Эли4ка
тогда костыль:
strtoupper($str[0]) . mb_substr($str, 1, null, $encoding);

А так у вас походу проблемы с кодировкой
segazav
Цитата (Эли4ка @ 14.10.2018 - 16:51)
А так у вас походу проблемы с кодировкой

Что именно не так с кодировкой?
arbuzmaster
Может здесь есть ответ на Ваш вопрос

_____________
Мой первый сайтик

Посмотри на свой XBMC под другим углом
killer8080
$str = mb_convert_case($str, MB_CASE_TITLE, "UTF-8");
segazav
Цитата (killer8080 @ 14.10.2018 - 18:41)
$str = mb_convert_case($str, MB_CASE_TITLE, "UTF-8");

Так это сделает заглавными буквы в каждом слове строки
Эли4ка
Цитата
Так это сделает заглавными буквы в каждом слове строки

Получите первую букву из всей строки и все.
segazav
Оказывается причина была не в функции преобразования первой буквы в заглавную, а вот в этом регулярном выражении, которым обрабатывалась строка до функции заглавной буквы:


$_POST['zagolovok'] = preg_replace("/[^а-яА-Яa-zA-z0-9ёЁ\s\-\,\.\:\;\/\!\?\(\)\«\»]/is", " ", $_POST['zagolovok']);


Как правильно его составить для кодировки utf-8 (это регулярное выражение работало в кодировке windows-1251)
Эли4ка
U модификатор добавить
segazav
Всем спасибо за помощь, теперь все работает нормально!
Гость_Anonim
$var = 'name';
echo ucfirst($var); //Name
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.