Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Кодировки-кодировки, работа с текстом в файле
igorpromen2009  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 8
Пользователь №: 32334
На форуме: 4 года, 7 месяцев, 3 дня
Карма:




Парни, здорово! Никогда не загонялся кодировками, работал в cp1251, время от времени конвертируя строки при работе с ajax. И тут столкнулся с такой штукой (прошу не пинать):
простенький скрипт для транслитерации на выходе дает кракозяблы:

Особенности:
1.Кодировки файлов: utf-8
2. iconv_set_encoding("input_encoding", "UTF-8");
iconv_set_encoding("output_encoding", "UTF-8");
iconv_set_encoding("internal_encoding", "UTF-8");
3.htaccess: addDefaultCharset UTF-8

Пример кода:
	function translit($st)
{
$st=strtr($st,"абвгдеёзийклмнопрстуфхъыэ_ ",
"abvgdeeziyklmnoprstufh-iei-");
$st=strtr($st,"АБВГДЕЁЗИЙКЛМНОПРСТУФХЪЫЭ /",
"ABVGDEEZIYKLMNOPRSTUFH-IEI-");

return $st;
}

//используем функцию
echo translit('русское слово');//здесь на выходе кракозяблики

спасибо, что поняли правильно
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Winston  
[x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 9509
Пользователь №: 18161
На форуме: 7 лет, 5 месяцев, 16 дней
Карма: 552




Твоя функция будет работать если ты будешь использовать кодировку cp1251

http://ua1.php.net/strtr
Цитата
Если указаны три аргумента, эта функция возвращает копию str, в которой все вхождения каждого символа (однобайтного) из from были заменены на соответствующий символ в параметре to, т.е. каждое вхождение из $from[$n] заменяется на $to[$n], где $n это корректное смещение строки в обоих аргументах.


В utf-8 нужно массив использовать

<?php

function
translit($st)
{
$r_lower = preg_split('//u', 'абвгдеёзийклмнопрстуфхъыэ_ ', -1, PREG_SPLIT_NO_EMPTY);
$e_lower = preg_split('//', 'abvgdeeziyklmnoprstufh-iei-', -1, PREG_SPLIT_NO_EMPTY);
$lower_replace = array_combine($r_lower, $e_lower);
$st = strtr($st, $lower_replace);

$r_upper = preg_split('//u', 'АБВГДЕЁЗИЙКЛМНОПРСТУФХЪЫЭ /', -1, PREG_SPLIT_NO_EMPTY);
$e_upper = preg_split('//', 'ABVGDEEZIYKLMNOPRSTUFH-IEI-', -1, PREG_SPLIT_NO_EMPTY);
$upper_replace = array_combine($r_upper, $e_upper);
$st = strtr($st, $upper_replace);

return $st;
}

//используем функцию
echo translit('русское слово');//здесь на выходе все OK :)
PMСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
igorpromen2009  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 8
Пользователь №: 32334
На форуме: 4 года, 7 месяцев, 3 дня
Карма:




Спасибо, дорогой!
я сделал так

	function trans($st)
{
//все в нижний
$st = mb_strtolower($st,'UTF-8');
$from = array(
'а','б','в','г','д','е','ё',
'ж','з','и','й','к','л','м',
'н','о','п','р','с','т','у',
'ф','х','ц','ч','ш','щ','ь',
'ы','ъ','э','ю','я'
);

$to = array(
'a','b','v','g','d','e','yo',
'zh','z','i','y','k','l','m',
'n','o','p','r','s','t','u',
'f','h','ts','ch','sh','shch','',
'i','','e','yu','ya',
);

//удаляем всякий мусор
$st = str_replace(array(".",",","!","?",":"),"",$st);
return str_replace($from, $to, $st);
}

PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса