Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Не работает mb_convert_case (https://javascript.ru/forum/server/27497-ne-rabotaet-mb_convert_case.html)

kilogram 15.04.2012 00:32

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

Код:

<?php
$str = "у мэри был маленький ягненок и она его очень любила";
$str = mb_convert_case($str, MB_CASE_UPPER, "UTF-8");
echo $str; // Выведет У МЭРИ БЫЛ МАЛЕНЬКИЙ ЯГНЕНОК И ОНА ЕГО ОЧЕНЬ ЛЮБИЛА
$str = mb_convert_case($str, MB_CASE_TITLE, "UTF-8");
echo $str; // Выведет У Мэри Был Маленький Ягненок И Она Его Очень Любила
?>


devote 15.04.2012 00:35

Потому что вам текст нужно отдавать функции в формате UTF-8 а не WINDOWS-1251 перекодируйте файл с исходным кодом в UTF-8 и все будет норм.

kilogram 15.04.2012 00:44

Спасибо. Странно как-то, пришлось перекодировать сам файл index.php в ЮТФ-8, тогда только заработало.

kilogram 15.04.2012 01:05

<html><body>
<?php

$str = "у мэри Был маленький ягненок и она его очень любила. однажды она купила слона.";

$str = mb_convert_case($str,MB_CASE_TITLE,"UTF-8");
echo $str;
echo '<br>'.ucfirst($str);
?>
</body></html>


Что-то эти 2 функции не оправдали моих надежд.
Мне нужно чтоб каждая первая буква, в каждом следующем предложении начиналась с большой буквы, а они в каждом слове все с большой буквы, не подскажете какую функцию в такой ситуации использовать?

T-sh 15.04.2012 04:47

Цитата:

Сообщение от kilogram (Сообщение 169117)
<html><body>
<?php

$str = "у мэри Был маленький ягненок и она его очень любила. однажды она купила слона.";

$str = mb_convert_case($str,MB_CASE_TITLE,"UTF-8");
echo $str;
echo '<br>'.ucfirst($str);
?>
</body></html>


Что-то эти 2 функции не оправдали моих надежд.
Мне нужно чтоб каждая первая буква, в каждом следующем предложении начиналась с большой буквы, а они в каждом слове все с большой буквы, не подскажете какую функцию в такой ситуации использовать?


ну вот..как-то на скорую руку накидал такое:

<?php

function ufb($str){
$stats = explode('. ',$str);
for($i = sizeof($stats)-1; $i>0; $i-=1){
$words = explode(' ',$stats[$i]);
$words[0] = mb_convert_case($words[0], MB_CASE_TITLE, "UTF-8");
$stats[$i] = join(' ', $words);
}
return join('. ', $stats);
}

$a = "Вася спит. петя бухает. коля курит. маша машит.";
echo ufb($a);
?>


вообще с кирилицей работать с регистрами проблематично :)

Викториан 15.04.2012 11:42

а у меня этот код не работает, просто текстом, когда заключаешь в <script></script> вообще ничего нет...

devote 15.04.2012 11:44

Цитата:

Сообщение от Викториан
а у меня этот код не работает, просто текстом, когда заключаешь в <script></script> вообще ничего нет...

Потому что этот код не для JavaScript а для PHP


Часовой пояс GMT +3, время: 02:35.