Какую функцию использовать чтобы сделать транслит в коде?

Главные вкладки

Комментарии

Аватар пользователя Shok211 Shok211 29 февраля 2012 в 21:24
<?php

function translit($text$op 'toEng'$errors FALSE)
       {
           
$ruEn = array(
                   
"Ґ"=>"G","Ё"=>"YO","Є"=>"E","Ї"=>"YI","І"=>"I",
                   
"і"=>"i","ґ"=>"g","ё"=>"yo","№"=>"#","є"=>"e",
                   
"ї"=>"yi","А"=>"A","Б"=>"B","В"=>"V","Г"=>"G",
                   
"Д"=>"D","Е"=>"E","Ж"=>"ZH","З"=>"Z","И"=>"I",
                   
"Й"=>"Y","К"=>"K","Л"=>"L","М"=>"M","Н"=>"N",
                   
"О"=>"O","П"=>"P","Р"=>"R","С"=>"S","Т"=>"T",
                   
"У"=>"U","Ф"=>"F","Х"=>"H","Ц"=>"TS","Ч"=>"CH",
                   
"Ш"=>"SH","Щ"=>"SCH","Ъ"=>"'","Ы"=>"YI","Ь"=>"",
                   
"Э"=>"E","Ю"=>"YU","Я"=>"YA","а"=>"a","б"=>"b",
                   
"в"=>"v","г"=>"g","д"=>"d","е"=>"e","ж"=>"zh",
                   
"з"=>"z","и"=>"i","й"=>"y","к"=>"k","л"=>"l",
                   
"м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r",
                   
"с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"h",
                   
"ц"=>"ts","ч"=>"ch","ш"=>"sh","щ"=>"sch","ъ"=>"'",
                   
"ы"=>"yi","ь"=>"","э"=>"e","ю"=>"yu","я"=>"ya"
               
);

           if(empty(

$text))
               
$error[] = 'Введите текст';

           switch(

$op)
           {

               case 

'toRu':
                   
$result str_replace($ruEnarray_keys($ruEn), $text);
                   if(empty(
$result))
                       
$error[] = 'Текст не был переведен(Eng => Rus)';
                   break;

               case 

'toEng':
                   
$result str_replace(array_keys($ruEn), $ruEn$text);
                   if(empty(
$result))
                       
$error[] = 'Текст не был переведен(Rus => Eng)';
                   break;

               default :
                   

$error[] = "Комманды:$op Не существует. Введите сущ. комманду";
                   break;
           }

           if(

$errors === TRUE && !empty($error))
              return 
$error;
           elseif(!empty(
$result))
               return 
$result;
           else
               return 
FALSE;
       }

?>
Аватар пользователя adisos adisos 29 февраля 2012 в 22:24

Chyvakoff wrote:
Сам код писал?
Можно поставить модуль Transliteration и юзать его функции. Сам так делал.

извините, а где его функции можно посмотреть? искал - не нашел.

Аватар пользователя Shok211 Shok211 29 февраля 2012 в 22:04

Разве по корявому русскому не видно xD. Писал для 6 ибо pathauto не нашел отдельной функции для транслита.

Аватар пользователя Chyvakoff Chyvakoff 1 марта 2012 в 9:14

"Shok211" wrote:
Разве по корявому русскому не видно xD. Писал для 6 ибо pathauto не нашел отдельной функции для транслита.

Её там и быть не должно
"adisos" wrote:
извините, а где его функции можно посмотреть? искал - не нашел.

Искать надо в transliteration.module
transliteration_clean_filename

Аватар пользователя adisos adisos 1 марта 2012 в 9:34

нашел

Third party developers seeking an easy way to transliterate text or file names
46 may use transliteration functions as follows:
47
48 if (function_exists('transliteration_get')) {
49 $transliterated = transliteration_get($text, $unknown, $source_langcode);
50 }
51
52 or, in case of file names:
53
54 if (function_exists('transliteration_clean_filename')) {
55 $transliterated = transliteration_clean_filename($filename, $source_langcode);
56 }
57
58 Note that the optional $source_langcode parameter specifies the language code
59 of the input. If the source language is not known at the time of transliter-
60 ation, it is recommended to set this argument to the site default language:
61
62 $output = transliteration_get($text, '?', language_default('language'));
63
64 Otherwise the current display language will be used, which might produce
65 inconsistent results.