Транслитерация

id9999i

Новичок
Транслитерация

Как реализовать транслитерацию в utf-8 из 2-х вот таких вот масивов?
PHP:
$rus	= array ("а", "б", "в", "г", "д", "е", "ё", "ж", "з", "и", "й", "к", "л", "м", "н",
				  "о", "п", "р", "с", "т", "у", "Ф", "х", "ц", "ч", "ш", "щ", "ъ", "ы", "ь", "э", "ю", "я");
$eng	= array ("a", "b", "v", "g", "d", "e", "jo", "zh", "z", "i", "j", "k", "l", "m", "n", "o", "p", 
				  "r", "s", "t", "u", "f", "h", "c", "ch", "sh", "sh", "'", "y", "'", "e", "yu", "ya");
 

id9999i

Новичок
PHP:
$str	= "привет";
for ($i = 0; $i <= strlen ($str); $i++) {
	$tlit	.= str_replace ($rus, $eng, $str[$i]);
	}
не получается :(
 

Adelf

Administrator
Команда форума
id9999i str_replace меняет всю строку целиком. Не надо самому по символам бегать.
 

dimagolov

Новичок
id9999i, все получается даже тем извращенным способом, что ты выдумал. но у тебя и нормальные не получатся. хотя пример ты привел идеальный для того, чтобы понять, где же ты накосячил :)
 

dimagolov

Новичок
Вурдалак, все равно, пусть найдет косяк в своем коде и отладит его на однобайтной кодировке.
 

dimagolov

Новичок
Вурдалак, кстати без разницы, и strtr и str_replace (только без цикла) нормально переносят utf-8 в такой "массивной" а не "строчной", хотя под него и не писались.

-~{}~ 11.01.10 12:59:

у него не просто косяк, у него еще и буквы потеряны, что компенсировало друг друга :) классический пример, когда двойная ошибка делает код работоспособным :)
 

id9999i

Новичок
Нашел/исправил проблему.
Тперь работает, но большие буквы не заменяются.
str_ireplace не помогает.
 

dimagolov

Новичок
понятное дело, что большие не заменяет. добавь в массив большие буквы и не страдай фигней
 

Вурдалак

Продвинутый новичок
Автор оригинала: dimagolov
Вурдалак, кстати без разницы, и strtr и str_replace (только без цикла) нормально переносят utf-8 в такой "массивной" а не "строчной", хотя под него и не писались.
— я не понял, что ты хотел сказать.

С str_replace() проблемы возникнут, когда захочется сделать транслитерацию из латиницы в кириллицу.
 

dimagolov

Новичок
С str_replace() проблемы возникнут, когда захочется сделать транслитерацию из латиницы в кириллицу.
так там же неоднозначное преобразование в принципе (двухсимвольные комбинации) и к str_replace это не имеет никакого отношения
я не понял, что ты хотел сказать
strtr можно параметры передавать 2-я способами: строками и массивами. так вот, строками очевидно, что utf-8 работать не будет, а вот массивом за милую душу.
 
Сверху