Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Тексты > Безобразие с кодировками


Автор: Finder128 18.3.2011, 12:28
Доброго времени суток всем. Вкратце опишу мою проблему. Мне нужно реализовать функцию склонения слов. То есть заменять окончания в словах в соответствии с нормами русского языка. Свои строковые функции я помещаю в файл string.class, который подключается в файле index.php, оттуда идёт вызов функции и результат помещается в соответствующий шаблон. Так вот, локаль я устанавливаю в самой функции, и в отдельно взятом файле всё работает, а при вызове из index работает неправильно. Вместо изьятой через substr буквы пишется ?.  Кодировки в index.php - utf-8, string.class - utf-8.
Код функции: 
Код

function declension ($word){

//if(substr($word,-1)<>"ь"):
  setlocale(LC_ALL, 'ru_RU.UTF-8');
  echo "word $word <br>";
$last_symbol=substr($word,-1);
echo "last $last_symbol <br>";

switch($last_symbol){
case "а": $ending="ы";
break;
case "я": $ending="и";
break;
case ($last_symbol=="у" or $last_symbol=="о" or $last_symbol=="э"): $ending="";
break;
default:
$ending="а";
}
if($ending) $buffer=substr($word,0,-1);$word=$buffer.$ending;

return $word;

}

Автор: bars80080 18.3.2011, 15:54
для многобайтовых надо применять функции mb_* , то есть mb_substr(), конечно при условии, что модуль mb_string подключен
либо прописать в конфиге севера или .htaccess строку 

mbstring.func_overload=2


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)