Перейти к содержимому


Выводить с заглавной буквы в html шаблон


Сообщений в теме: 8

#1 kok

    Активный участник

  • Пользователи
  • PipPipPip
  • 78 сообщений
  • Пол:Мужчина

Отправлено 21 Январь 2011 - 13:43

Подскажите как при выводе значения текстового поля в html шаблон - выводить с заглавной буквы?
Модификатор {$Nasha_kompaniya.Dolzhnost|capitalize:true} не отработал :-(
*Свободный программер.

#2 Analitic

    Активный участник

  • Пользователи
  • PipPipPip
  • 700 сообщений
  • Пол:Мужчина

Отправлено 21 Январь 2011 - 14:32

Стандартный модификатор capitalize в смарти криво работает с русскими буквами в кодировке utf-8.
Специально для вас в программу добавлена функция, mb_ucfirst.
1. обновите дистрибутив
2. используте в смарти как {$Nasha_kompaniya.Dolzhnost|mb_ucfirst}

#3 kok

    Активный участник

  • Пользователи
  • PipPipPip
  • 78 сообщений
  • Пол:Мужчина

Отправлено 21 Январь 2011 - 15:22

Спасибо!
*Свободный программер.

#4 kok

    Активный участник

  • Пользователи
  • PipPipPip
  • 78 сообщений
  • Пол:Мужчина

Отправлено 21 Январь 2011 - 16:45

Просмотр сообщенияAnalitic (21.1.2011, 14:32) писал:

...Специально для вас в программу добавлена функция, mb_ucfirst...

А может в этой ф-ии изменить строку:
$string = mb_strtoupper(mb_substr($string, 0, 1, "UTF-8"), "UTF-8").mb_substr($string, 1, mb_strlen($string), "UTF-8" );

на такую?
$string = preg_replace( '/^(\S)(.*)$/eu', "mb_strtoupper('\\1', 'UTF-8').mb_strtolower('\\2', 'UTF-8')", $string );

Ведь так действительно будет заглавным только первый символ.
*Свободный программер.

#5 Analitic

    Активный участник

  • Пользователи
  • PipPipPip
  • 700 сообщений
  • Пол:Мужчина

Отправлено 24 Январь 2011 - 10:58

Просмотр сообщенияkok (21.1.2011, 16:45) писал:

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

В чем разница? на примерах?

#6 kok

    Активный участник

  • Пользователи
  • PipPipPip
  • 78 сообщений
  • Пол:Мужчина

Отправлено 26 Январь 2011 - 17:03

Просмотр сообщенияAnalitic (24.1.2011, 10:58) писал:

В чем разница? на примерах?

Ввели в поле значение: "пРИвет"

1. вариант выведет: "ПРИвет"
$string = mb_strtoupper(mb_substr($string, 0, 1, "UTF-8"), "UTF-8").mb_substr($string, 1, mb_strlen($string), "UTF-8" );

2. вариант выведет: "Привет"
$string = preg_replace( '/^(\S)(.*)$/eu', "mb_strtoupper('\\1', 'UTF-8').mb_strtolower('\\2', 'UTF-8')", $string );
*Свободный программер.

#7 Analitic

    Активный участник

  • Пользователи
  • PipPipPip
  • 700 сообщений
  • Пол:Мужчина

Отправлено 26 Январь 2011 - 18:01

Почему вы считаете что ваш вариант более правильный?
Ввели в поле значение: компания OOO "Позитив"

1. вариант выведет: "Компания OOO "Позитив" "
$string = mb_strtoupper(mb_substr($string, 0, 1, "UTF-8"), "UTF-8").mb_substr($string, 1, mb_strlen($string), "UTF-8" );

2. вариант выведет: "Компания ооо "позитив" "

налицо порча символов: ООО "П

#8 Analitic

    Активный участник

  • Пользователи
  • PipPipPip
  • 700 сообщений
  • Пол:Мужчина

Отправлено 26 Январь 2011 - 18:05

Если нужен понижающий регистр, можно использовать |mb_strtolower|mb_ucfirst

#9 kok

    Активный участник

  • Пользователи
  • PipPipPip
  • 78 сообщений
  • Пол:Мужчина

Отправлено 27 Январь 2011 - 09:05

Просмотр сообщенияAnalitic (26.1.2011, 18:05) писал:

Если нужен понижающий регистр, можно использовать |mb_strtolower|mb_ucfirst

Понял, спасибо.
*Свободный программер.





Количество пользователей, читающих эту тему: 2

0 пользователей, 2 гостей, 0 анонимных