Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Скрипт транслитерации, Помогите найти скрипт 
:(
    Опции темы
CandleMan
  Дата 25.3.2005, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 30.3.2004
Где: Тольятти

Репутация: нет
Всего: 2



Помогите найти скрипт транслитерации с кириллицы на латиницу

Например:

Щедровицкий --> Shchedrovitskij

Заранее спасибо.

Добавлено @ 12:06
smile
PM MAIL WWW ICQ Skype   Вверх
Mal Hack
Дата 25.3.2005, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Делаешь два массива. Первый содержит символы русского алфавита.
Сторой массив - английские символы, которые соответствуют русским.
Затем пишешь str_replace( $arr1 , $arr2 , $text );
PM ICQ   Вверх
CandleMan
Дата 25.3.2005, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 30.3.2004
Где: Тольятти

Репутация: нет
Всего: 2



Вариант хороший.

А что делать, если в одном случае буква "Я" пишется через "JA", а в другом "YA"

Например:
ява -> JAVA

Белая -> BELAYA
PM MAIL WWW ICQ Skype   Вверх
Mal Hack
Дата 25.3.2005, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Тут уже текст анализировать надо... надо алгоритм придумывать. ИМХО, лучше не париться. Уж больно объемная задача в таком случае получается.
PM ICQ   Вверх
CandleMan
Дата 25.3.2005, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 30.3.2004
Где: Тольятти

Репутация: нет
Всего: 2



Поэтому и ищу скрипт, который бы это анализировал и транслировал.

Нигде не попадался?
PM MAIL WWW ICQ Skype   Вверх
skalex
Дата 25.3.2005, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хороший человек
**


Профиль
Группа: Участник Клуба
Сообщений: 895
Регистрация: 2.4.2004

Репутация: 8
Всего: 23



Вот, когда то очень давно писал что то подобное. Можно взять за основу... Обтесать немного только надо... Не судите строго, т.к. скрипт писал когда еще только начинал программировать на PHP. Выкладываю как есть...
Код
<?php

// Не забываем про локаль!
setlocale(LC_ALL, 'ru_RU.CP1251');

// Функция транслитерации
function Transliterate($string, $mode = 'lat') {
   $rus2lat = array(
      'й' => 'j',
      'ц' => 'ts',
      'у' => 'u',
      'к' => 'k',
      'е' => 'e',
      'н' => 'n',
      'г' => 'g',
      'ш' => 'sh',
      'щ' => 'sch',
      'з' => 'z',
      'х' => 'h',
      'ъ' => '`',
      'ф' => 'f',
      'ы' => 'y',
      'в' => 'v',
      'а' => 'a',
      'п' => 'p',
      'р' => 'r',
      'о' => 'o',
      'л' => 'l',
      'д' => 'd',
      'ж' => 'zh',
      'э' => 'e',
      'я' => 'ya',
      'ч' => 'ch',
      'с' => 's',
      'м' => 'm',
      'и' => 'i',
      'т' => 't',
      'ь' => '`',
      'б' => 'b',
      'ю' => 'ju'
   );
   $lat2rus = array(
      'q' => 'кью',
      'w' => 'в',
      'e' => 'е',
      'r' => 'р',
      't' => 'т',
      'y' => 'ы',
      'u' => 'у',
      'i' => 'и',
      'o' => 'о',
      'p' => 'п',
      'a' => 'а',
      's' => 'с',
      'd' => 'д',
      'f' => 'ф',
      'g' => 'г',
      'h' => 'х',
      'j' => 'ж',
      'k' => 'к',
      'l' => 'л',
      'z' => 'з',
      'x' => 'кс',
      'c' => 'ц',
      'v' => 'в',
      'b' => 'б',
      'n' => 'н',
      'm' => 'м'
   );
   $data = ($mode == 'rus') ? $lat2rus : $rus2lat;
   $output = "";
   for ($i = 0; $i < strlen($string); $i++) {
      $letter = substr($string, $i, 1);
      if (preg_match("%".(($mode == 'rus') ? "[A-Za-z]" : "[А-Яа-я]")."%", $letter)) {
         $output .= (strtolower($letter) != $letter) ? strtoupper($data[strtolower($letter)]) : $data[$letter];
      } else {
         $output .= $letter;
      }
   }
   return $output;
}

echo '<li>'.Transliterate('privet', 'rus');
echo '<li>'.Transliterate('привет');
echo '<li>'.Transliterate('Щедровицкий');

?>

PM   Вверх
maxbrown
Дата 21.12.2008, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 26
Регистрация: 16.6.2008
Где: Obninsk sci-city

Репутация: нет
Всего: нет



Скрипт обратимой (взаимо-однозначной) транслитерации кириллицы согласно ГОСТ 7.79-2000 Правил транслитерации кирилловского письма латинским алфавитом, принятых Межгосударственным Советом по стандартизации, метрологии и сертификации и Госстандартом России. Live Demo там же, на странице.
Как автор, разрешаю свободное использование, хотя и буду признателен за установку ссылки. При публикации исходного текста ссылка на источник обязательна, это связано с моим желанием получать отзывы и модернизировать скрипт.

Это сообщение отредактировал(а) maxbrown - 21.12.2008, 13:57
PM MAIL WWW ICQ   Вверх
nerezus
Дата 21.12.2008, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 12
Всего: 43



Цитата

А что делать, если в одном случае буква "Я" пишется через "JA", а в другом "YA"
 Она ВСЕГДА пишется как YA.
Ява -> YAVA
А Java - это уже перевод, а не транслитерация.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
theworldcreator
Дата 21.12.2008, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 362
Регистрация: 25.8.2007
Где: Москва

Репутация: 10
Всего: 13



to maxbrown
поправьте там строчку
Код

$s=str_replace(""","&quot;",$s); // сохраняем кавычки

экранировав кавычку или написав так:
Код

$s=str_replace('"',"&quot;",$s); // сохраняем кавычки


Кстати я так и не понял зачем надо переводить в другой регистр, если не сложно объясните.

Это сообщение отредактировал(а) theworldcreator - 21.12.2008, 18:15
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

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


 




[ Время генерации скрипта: 0.0820 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.