Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Сделать транслит (https://forum.antichat.xyz/showthread.php?t=112654)

Myload 23.03.2009 19:21

Сделать транслит
 
нашел скрипт транслит но незнаю
как сделать чтоб переводил помогите спс :rolleyes:

PHP код:

<script type="text/javascript">  
  var 
latin=("a-b-c-d-e-f-g-h-i-j-k-l-m-n-o-p-q-r-s-t-u-v-w-x-y-z-;-A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z").split("-")  
  var 
ciril=("а-б-ц-д-е-ф-г-х-и-й-к-л-м-н-о-п-э-р-с-т-у-в-ш-ы-ч-з-я-А-Б-Ц-Д-Е-Ф-Г-Х-И-Й-К-Л-М-Н-О-П-Э-Р-С-Т-У-В-Ш-Ы-Ч-З").split("-")  
  
//(c) subONE [razgona.net]  
  
function translit() {  
  var 
omg=document.selection.createRange()  
  var 
omg1=omg.text  
  
var xy=0  
  
for(xy=0xy<=(latin.length-1); xy++) {  
  var 
latin1="/"+latin[xy]+"/g"  
  
omg1=omg1.replace(eval(latin1), ciril[xy])  
  }  
  
omg.text=omg1  
  
}  
  </
script

<
textarea name="Message" id="Message" cols="30" rows="5" class="text"></textarea><br>

<
input type="button" value="Транслит" onclick="translit()"


Myload 23.03.2009 20:12

да и как сделать из вот это

<a href="javascript:t.go(0)" title="Перевести в кириллицу">Кириллица</a>

кнопку?

inlanger 23.03.2009 20:21

<input type=button onclick=t.go(0) value="Йа кнопка">

Pashkela 23.03.2009 22:18

Код:

<script>
var rusChars = new Array('а','б','в','г','д','е','ё','ж','з','и','й','к','л','м','н','о','п','р','с','т','у','ф','х','ч','ц','ш','щ','э','ю','\я','ы','ъ','ь', ' ', '\'', '\"', '\#', '\$', '\%', '\&', '\*', '\,', '\:', '\;', '\<', '\>', '\?', '\[', '\]', '\^', '\{', '\}', '\|', '\!', '\@', '\(', '\)', '\-', '\=', '\+', '\/', '\\');
var transChars = new Array('a','b','v','g','d','e','jo','zh','z','i','j','k','l','m','n','o','p','r','s','t','u','f','h','ch','c','sh','csh','e','ju','ja','y','', '', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '');
var from = "";

function convert2EN()
  {
  from = document.getElementById("Message").value;
  from = from.toLowerCase();
  var to = "";
  var len = from.length;
  var character, isRus;
  for(var i=0; i < len; i++)
    {
    character = from.charAt(i,1);
    isRus = false;
    for(var j=0; j < rusChars.length; j++)
      {
      if(character == rusChars[j])
        {
        isRus = true;
        break;
        }
      }
    to += (isRus) ? transChars[j] : character;
    }
  document.form1.Message.value = to;
  }
</script>

<FORM NAME="form1">
<textarea name="Message" id="Message" cols="30" rows="5" class="text"></textarea><br>
<input type="button" value="Транслит" onclick="convert2EN()">
</FORM>


Myload 26.03.2009 18:09

спс;)

Дикс 27.03.2009 22:28

использовал конвертер в транслит, немного улучшил:
Цитата:


function translit() {

field = document.getElementById('Message');
from = field.value.toLowerCase();

to = '';
len = from.length;
rlen = rusChars.length;
var character, isRus;

for(var i = 0; i < len; i++)
{
var character = from.charAt(i,1);
foundIndex = rusChars.indexOf(character);
to += (foundIndex != -1) ? transChars[foundIndex] : character;
}

field.value = to;
}
в частности там нет необходимости перебирать весь массив с русскими символами, чтобы узнать русский у нас символ или нет. достаточно использовать indexOf

Дикс 27.03.2009 22:39

Конвертер транслита на яваскрипт
 
ваще вот лучший пример:

PHP код:


<script type='text/javascript'>

function 
translit(id) {

    var 
field document.getElementById(id);
    var 
from field.value.toLowerCase();

    var 
rusChars = new Array('а','б','в','г','д','е','ё','ж','з','и','й',  'к','л','м','н','о','п','р','с','т','у','ф','х','ч  ','ц','ш','щ','э','ю','\я','ы','ъ','ь'' ''\'''\"''\#''\$''\%''\&''\*''\,''\:''\;''\<''\>''\?''\[''\]''\^''\{''\}''\|''\!''\@''\(''\)''\-''\=''\+''\/''\\');
    var 
transChars = new Array('a','b','v','g','d','e','jo','zh','z','i','j  ','k','l','m','n','o','p','r','s','t','u','f','h',  'ch','c','sh','csh','e','ju','ja','y','_''_''_''_''_''_''_''_''_''''''''''''''''''''''''''''''''''''_''_''_''_''_');

    var 
to '';
    var 
len from.length;
    var 
rlen rusChars.length;
    var 
characterisRus;

    for(var 
0leni++)
    {
        var 
character from.charAt(i,1);
        var 
foundIndex rusChars.indexOf(character);
        
to += (foundIndex != -1) ? transChars[foundIndex] : character;
    }

    
field.value to;
}

</
script>
<
input type='text' id='message' /><input type='button' onclick='translit("message")' value='&larr; to translite' /> 


Файл должен быть в ansi (windows-1251) кодировке.

astrologer 27.03.2009 23:30

  1. charAt принимает один параметр
  2. Метод Array.prototype.indexOf не является стандартным и его нет как минимум в ie
  3. hint:
    Код:

    {
      'а': 'a',
      'б': 'b',
      'в': 'v'
      /* etc */
    }


Дикс 28.03.2009 09:52

спасибо

Дикс 28.03.2009 10:18

чет я не понимаю..
charsArray - это объект.
как получить его длину?
и как проверить наличие в нём текущей буквы? (в смысле есть ли способ, типа indexOf)?

PHP код:

function translit() {

    var 
charsArray = {
        
'а':'a',
        
'б':'b',
        
'в':'v',
        
'г':'g',
        
'д':'d',
        
'е':'e',
        
'ё':'jo',
        
'ж':'zh',
        
'з':'z',
        
'и':'i',
        
'й':'j',
        
'к':'k',
        
'л':'l',
        
'м':'m',
        
'н':'n',
        
'о':'o',
        
'п':'p',
        
'р':'r',
        
'с':'s',
        
'т':'t',
        
'у':'u',
        
'ф':'f',
        
'х':'h',
        
'ч':'ch',
        
'ц':'c',
        
'ш':'sh',
        
'щ':'csh',
        
'э':'e',
        
'ю':'ju',
        
'\я':'ja',
        
'ы':'y',
        
'ъ':'',
        
'ь':'\'',
        
' ':'_',
        
'\'':'',
        
'\"':'',
        
'\#':'',
        
'\$':'',
        
'\%':'',
        
'\&':'',
        
'\*':'',
        
'\,':'',
        
'\:':'',
        
'\;':'',
        
'\<':'',
        
'\>':'',
        
'\?':'',
        
'\[':'',
        
'\]':'',
        
'\^':'',
        
'\{':'',
        
'\}':'',
        
'\|':'',
        
'\!':'',
        
'\@':'',
        
'\(':'',
        
'\)':'',
        
'\-':'_',
        
'\=':'',
        
'\+':'',
        
'\/':'',
        
'\\':''
    
};
    var 
field document.getElementById('message');
    var 
from field.value.toLowerCase();

    var 
to '';
    var 
character;

    for(var 
061i++)
    {
        var 
character from.charAt(i);
        
foundIndex charsArray.indexOf(character);
        
to += (foundIndex != -1)? charsArray[character] : character;
    }

    
field.value to;




Время: 15:20