ФорумПрограммированиеPHP для идиотов → Своя функция - аналог ucwords

Своя функция - аналог ucwords

  • Nikky

    Сообщения: 9 Репутация: N Группа: Кто попало

    Spritz 28 июня 2012 г. 1:05

    Не устраивает работоспособность функции ucwords. Так как на некоторых серверах она вообще ничего не делает, на некоторых косячит с кодировкой.

    Написал свою таким образом. Прошу не пинать) В пхп не мастер

    function my_ucvords($str) 
    {
    $a = substr($str, 0, 1);
    $b = substr($str, 1);
    $tr = array(
    "а"=>"А","б"=>"Б","в"=>"В","г"=>"Г","д"=>"Д",
    "е"=>"Е","ё"=>"Ё","ж"=>"Ж","з"=>"З","и"=>"И",
    "к"=>"К","л"=>"Л","м"=>"М","н"=>"Н","о"=>"О",
    "п"=>"П","р"=>"Р","с"=>"С","т"=>"Т","у"=>"У",
    "ф"=>"Ф","х"=>"Х","ц"=>"Ц","ч"=>"Ч","ш"=>"Ш",
    "щ"=>"Щ","э"=>"Э","ю"=>"Ю","я"=>"Я",

    "a"=>"A","b"=>"B","c"=>"C","d"=>"D","e"=>"E",
    "f"=>"F","g"=>"G","h"=>"H","i"=>"I","j"=>"J",
    "k"=>"K","l"=>"L","m"=>"M","n"=>"N","o"=>"O",
    "p"=>"P","q"=>"Q","r"=>"R","s"=>"S","t"=>"T",
    "u"=>"U","v"=>"V","w"=>"W","x"=>"X","y"=>"Y",
    "z"=>"Z",
    );
    $a = strtr($a,$tr);
    return $a.$b;
    }


    Но опять же иногда непонятно почему проблемы с кодировкой возникают. Подскажите как можно добиться универсальности в этом. Чтобы работало везде главное.
  • tartar

    Сообщения: 186 Репутация: N Группа: Кто попало

    Spritz 28 июня 2012 г. 1:15, спустя 9 минут 43 секунды

    function upper($value, $encoding='') {
    return ($encoding) ? mb_strtoupper($value, $encoding) : strtoupper($value);
    }
  • Nikky

    Сообщения: 9 Репутация: N Группа: Кто попало

    Spritz 28 июня 2012 г. 2:15, спустя 1 час 30 секунд


    function upper($value, $encoding='') {
    return ($encoding) ? mb_strtoupper($value, $encoding) : strtoupper($value);
    }


    Как это будет работать?
    $str = upper($str, здесь что?);
  • tartar

    Сообщения: 186 Репутация: N Группа: Кто попало

    Spritz 28 июня 2012 г. 2:27, спустя 11 минут 25 секунд

    Если работаешь с ANSI тогда 2 параметр можешь и не ставить. А вот если работаешь с русским тогда так:

    function upper($value, $encoding='') {
    return ($encoding) ? mb_strtoupper($value, $encoding) : strtoupper($value);
    }

    // Работаем с русским
    echo upper('Эври дэй айм шаффлин', 'utf-8');
  • tartar

    Сообщения: 186 Репутация: N Группа: Кто попало

    Spritz 28 июня 2012 г. 2:54, спустя 27 минут 7 секунд

    Оу, бля точно…
    Спустя 281 сек.
    меня смутил массив автора и название функции ucwords это же бля множественное число. Есть же ucfirst которая и орфографически правильно сделана чью цель применения понятна из самой названии.
  • tartar

    Сообщения: 186 Репутация: N Группа: Кто попало

    Spritz 28 июня 2012 г. 3:03, спустя 9 минут 29 секунд

    а нет, я не прав :)
  • Nikky

    Сообщения: 9 Репутация: N Группа: Кто попало

    Spritz 28 июня 2012 г. 3:13, спустя 9 минут 19 секунд

    Парни проблема в другом. У меня есть скрипт который делает минимум функций. Первопричину устранить не в силах, потому что скрипт будет использоваться на разных серверах.

    Мне нужен универсальный способ делать первую букву строки заглавной. Прошу помощи)
  • technobulka

    Сообщения: 4540 Репутация: N Группа: Джедаи

    Spritz 28 июня 2012 г. 3:15, спустя 2 минуты 35 секунд

    text-transform: capitalize;
    Высокоуровневое абстрактное говно
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 28 июня 2012 г. 3:50, спустя 35 минут 17 секунд


    text-transform: capitalize;

    +1
    adw/0
  • Nikky

    Сообщения: 9 Репутация: N Группа: Кто попало

    Spritz 28 июня 2012 г. 5:33, спустя 1 час 42 минуты 33 секунды

    Нужно именно в коде сделать большую букву а не только для вывода в браузер. Неужели нет универсальных конструкций?
  • tartar

    Сообщения: 186 Репутация: N Группа: Кто попало

    Spritz 28 июня 2012 г. 12:10, спустя 6 часов 37 минут 22 секунды

    ucwords сегодня так популярна

Пожалуйста, авторизуйтесь, чтобы написать комментарий!