За последние 24 часа нас посетили 38006 программистов и 1811 роботов. Сейчас ищут 853 программиста ...

Не работает mb_convert_case

Тема в разделе "PHP для новичков", создана пользователем kilogram, 15 апр 2012.

  1. kilogram

    kilogram Активный пользователь

    С нами с:
    19 мар 2012
    Сообщения:
    116
    Симпатии:
    0
    Так как функция ucfirst преобразует в верхний регистр лишь латиницу, а не кирилицу каждую первую букву, каждого следующего предложения в тексте, решил использовать альтернативную функцию mb_convert_case Прочитал в документации, там такой пример, но на экран ничего не выводистя вообще, хоть и эко стоит, хотя функции mb_strtolower и mb_strtoupper для других возможностей работают. Почему этот код не выводит ничего?

    Код (Text):
    1. <?php
    2. $str = "у мэри был маленький ягненок и она его очень любила";
    3. $str = mb_convert_case($str, MB_CASE_UPPER, "UTF-8");
    4. echo $str; // Выведет У МЭРИ БЫЛ МАЛЕНЬКИЙ ЯГНЕНОК И ОНА ЕГО ОЧЕНЬ ЛЮБИЛА
    5. $str = mb_convert_case($str, MB_CASE_TITLE, "UTF-8");
    6. echo $str; // Выведет У Мэри Был Маленький Ягненок И Она Его Очень Любила
    7. ?>
    Добавлено спустя 22 минуты 31 секунду:
    Странно как-то, пришлось перекодировать сам файл index.php в ЮТФ-8, тогда только заработало.

    Добавлено спустя 21 минуту 26 секунд:
    Код (Text):
    1.  
    2. <html><body>
    3. <?php
    4.  
    5. $str = "у мэри Был маленький ягненок и она его очень любила. однажды она купила слона.";
    6.  
    7. $str = mb_convert_case($str,MB_CASE_TITLE,"UTF-8");
    8. echo $str;
    9. echo '<br>'.ucfirst($str);
    10. ?>
    11. </body></html>
    Что-то эти 2 функции не оправдали моих надежд.
    Мне нужно чтоб каждая первая буква, в каждом следующем предложении начиналась с большой буквы, а они в каждом слове все с большой буквы, не подскажете какую функцию в такой ситуации использовать?
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    придется самому искать начало предложения и выдерать первое слово.
     
  3. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    Как ни странно, кодировка по умолчанию для mb_* нифига не уникод! Чтобы не подставлять всякий раз аргумент "кодировка", надо в начале работы вызвать mb_internal_encoding('utf-8') и будет счастье!

    Добавлено спустя 5 минут 33 секунды:
    Код (PHP):
    1. <?php
    2.  
    3. // Это для вашего браузера
    4. header('Content-type: text/html; charset=utf-8');
    5. // Это для всех mb_* функций
    6.  
    7. $str = "у мэри Был маленький ягненок и она его очень любила. однажды она купила слона.";
    8.  
    9. ?>
    10. <html>
    11. <head>
    12. <title>Хорошо то как, Машенька!</title>
    13. </head>
    14. <body>
    15. <?php echo $str; ?><br />
    16. <?php echo mb_convert_case($str, MB_CASE_TITLE); ?><br />
    17.  
    18. </body>
    19. </html>