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

  • Автор темы Автор темы id9999i
  • Дата начала Дата начала

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");
 
PHP:
$str	= "привет";
for ($i = 0; $i <= strlen ($str); $i++) {
	$tlit	.= str_replace ($rus, $eng, $str[$i]);
	}
не получается :(
 
id9999i str_replace меняет всю строку целиком. Не надо самому по символам бегать.
 
id9999i, все получается даже тем извращенным способом, что ты выдумал. но у тебя и нормальные не получатся. хотя пример ты привел идеальный для того, чтобы понять, где же ты накосячил :)
 
Вурдалак, все равно, пусть найдет косяк в своем коде и отладит его на однобайтной кодировке.
 
Вурдалак, кстати без разницы, и strtr и str_replace (только без цикла) нормально переносят utf-8 в такой "массивной" а не "строчной", хотя под него и не писались.

-~{}~ 11.01.10 12:59:

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

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