Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.07.2016, 10:47   #1
nikolokaputik80
Пользователь
 
Регистрация: 30.09.2015
Сообщений: 74
По умолчанию Функция ucwords не работает с кириллицей и не преобразует в верхний регистр первый символ каждого слова

Приветствую!

Помогите решить такую задачу!
есть переменная ($search) она выводит на сайте зоголовки (титлы) у меня возникла такая задача
если заголовок вида
(tree home)
то добавив функцию (ucwords)
вот исправно работующий пример для латиницы!

PHP код:
$search ucwords($search); // переводит первую букву каждого слова в верхний регистр, для латиницы! 
теперь в тит будет выводить вот так
(Tree Home)
делая заглавными первые буквы каждого слова, все это прекрасно работает так как мне нужно но только с латиницей, а вот
с кириллицей функция (ucwords) не хочет работать, и каждое слово остается с маленькой буквы

поиск в интернет помог найти вот такой код который будет работать и с кириллицей который я переделал под себя

PHP код:
$search mb_strtoupper(mb_substr($search01'UTF-8'), 'UTF-8') . mb_substr($search1mb_strlen($search), 'UTF-8'); // переводит первую букву слова в верхний регистр, для кириллицы! 
но тут есть одна проблема, если заголовок который в базе данных вида (все слова с маленькой буквы)
то выводит в титле тогда так (Все слова с маленькой буквы) заменяя только первую букву на заглавную, а нужно чтобы вывадило
заглавными все слова в титл, вот так (Все Слова С Маленькой Буквы)

Пмогите пожалуйста решить эту проблему с этим кодом!
PHP код:
$search mb_strtoupper(mb_substr($search01'UTF-8'), 'UTF-8') . mb_substr($search1mb_strlen($search), 'UTF-8'); // переводит первую букву слова в верхний регистр, для кириллицы! 
nikolokaputik80 вне форума Ответить с цитированием
Старый 19.07.2016, 11:34   #2
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

Для многобайтовых кодировок используйте функции с префиксом mb_
в вашем случае mb_ucword
ADSoft вне форума Ответить с цитированием
Старый 19.07.2016, 11:54   #3
nikolokaputik80
Пользователь
 
Регистрация: 30.09.2015
Сообщений: 74
По умолчанию

Цитата:
Сообщение от ADSoft Посмотреть сообщение
Для многобайтовых кодировок используйте функции с префиксом mb_
в вашем случае mb_ucword
не работает, выдает ошибку, я и раньше пробовал добавлять префикс mb_

работает только такой вариант
$search = mb_strtoupper(mb_substr($search, 0, 1, 'UTF-8'), 'UTF-8') . mb_substr($search, 1, mb_strlen($search), 'UTF-8'); // переводит первую букву слова в верхний регистр, для кириллицы!

да и то он делает заглавной только первую букву в первом слове, а в остальных нет, это касательно кириллицы, с латиницей все гуд!
nikolokaputik80 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В матрице К (5*5), элементами которой являются шестибуквенные слова, найти слово, в котором первый символ - буква А (Паскаль) Tolian92 Помощь студентам 1 14.12.2011 11:40
верхний регистр строки делфи BAMbarBIO Компоненты Delphi 9 21.06.2011 19:10
Верхний регистр для русского текста. Visual C++ Kingdom_Reborn Помощь студентам 1 17.12.2010 02:28
Ввод с клавиатуры,верхний и нижний регистр Forever_young Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 8 11.11.2009 23:27
Перевод имени в верхний регистр MalCer Общие вопросы Delphi 6 31.03.2009 13:14