Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Не работает функция транслитерации
 
 автор: provodnik   (27.01.2007 в 01:24)   письмо автору
 
 

Приятного времени суток.
У меня есть ф-ия, которая транлитерует строку, для последующего занесения в базу и для работы с сылками:


<?
function translit($string) {

// переводим в нижний регистр
$string strtolower($string);
setlocale(ru_RU.cp1251);
// удаляем лишние символы
$string preg_replace('{[^\w ]}s'''$string);
$string preg_replace('{[ ]+}'' '$string);

// делаем транслит
$string strtr($string
"абвгдежзийклмнопрстуфыэ",
"abvgdegziyklmnoprstufie"
);
$string strtr($string, array(
'ё'=>"yo"'х'=>"h"'ц'=>"ts"'ч'=>"ch"'ш'=>"sh"
'щ'=>"shch"'ъ'=>'''ь'=>'''ю'=>"yu"'я'=>"ya",
));

$explode explode(' '$string); 
$explode array_map('ucfirst'$explode);
$string implode(''$explode);

return 
$string;
}
?>


На локальной машине (win xp sp1 | денвер) всё работало отлично. Начались проблемы после выгрузки на хостинг: после её работы переменные опустошаются...

Хостер посоветовал заюзать

<?
setlocale
(ru_RU.cp1251);
// либо, если не сработает, то
setlocale(ru_RU.CP1251);
?>

Я записал в функцию второй строчкой:


<?
function translit($string) {  
setlocale(ru_RU.CP1251);
//............
?>

но ничего не изменилось...

Прошу совета по использованию этой ф-ии. Может я её не в том месте использую, может её нужно юзать непосредственно в коде, где осуществляется транслитерация...

Хостер ничего вразумительного не говорит... страница http://ru2.php.net/setlocaleмною прочитана, но ничего мною не понято. Help...
Спасибо...

   
 
 автор: hsasha   (27.01.2007 в 01:30)   письмо автору
 
   для: provodnik   (27.01.2007 в 01:24)
 

Попробуй в начале файла setlocale(LC_ALL, ''); setlocale(LC_CTYPE, "ru_RU.cp1251");

   
 
 автор: hsasha   (27.01.2007 в 01:33)   письмо автору
 
   для: provodnik   (27.01.2007 в 01:24)
 

Если на хосте пхп 5 то не используй strtolower,юзай mb_convert_case($var, MB_CASE_LOWER, "CP1251");
У меня такое было strtolower просто съедало кирилицу...
Вот нечего делать было...
function trans($name)
{

$symbs = array
(
"а" => "a","б" => "b","в" => "v","г" => "g","д" => "d",
"е" => "e","ё" => "e","ж" => "zh","з" => "z","и" => "i",
"й" => "j","к" => "k","л" => "l","м" => "m","н" => "n",
"о" => "o","п" => "p","р" => "r","с" => "s","т" => "t",
"у" => "u","ф" => "f","х" => "h","ц" => "ts","ч" => "ch",
"ш" => "sh","щ" => "sch","ъ" => "","ы" => "y","ь" => "",
"э" => "e","ю" => "yu","я" => "ya", " " => "-","_"=>"-","'"=>"");

return strtr((mb_convert_case($name, MB_CASE_LOWER, "CP1251")),$symbs);

}
$yo="приDет";
print trans($yo);

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования