Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Замена символов массива на соответсвующие из другого массива
 
 автор: Владимир22   (20.05.2011 в 20:58)   письмо автору
 
 

Подскажите, кто в курсе -
Есть текст(dr) из цифр и нужно заменить все его символы (zif) на соответсвующие из масива букв(buk).
function kod(sl){
zif= new Array( '94','52','9','36','42','40','97','73','53');
buk=new Array ( 'а', 'б','в','г','д','е','ё','ж','з','и');
ok=sl.replace(buk,zif);
return ok;
}
dr='94 36 97 53 42 "; var ok;  ok=kod(dr); alert(ok );

Так не работает :( Тогда как?

  Ответить  
 
 автор: Абырвалг   (20.05.2011 в 21:24)   письмо автору
 
   для: Владимир22   (20.05.2011 в 20:58)
 

Метод replace() заменяет ЧТО-ТО (которого может быть несколько штук в строке) на что-то другое (которое ТОЛЬКО ОДНО).

Сколько у Вас букв закодировано - столько же раз надо этот метод использовать.
В примере - это 10 букв (от А до И).
Сиречь, нужен цикл из 10 шагов. На каждом шаге цикла создаётся новое регулярное выражение, соответствующее коду zif [j] и эта регулярка меняется на соответствующую букву buk [j] методом replace ().

  Ответить  
 
 автор: Владимир22   (20.05.2011 в 21:32)   письмо автору
 
   для: Абырвалг   (20.05.2011 в 21:24)
 

Странно, а в PHP никаких циклов не требуется:
function translit($st){
$rus=array( 'ж','ц','ч','ш','щ','ь','ю','я');
$eng=array('zh','ts','ch','sh','shch','','yu','ya');
$st=str_replace($rus, $eng, $st); 
return $st;}


А что такое Сиречь?

  Ответить  
 
 автор: psychomc   (20.05.2011 в 21:42)   письмо автору
 
   для: Владимир22   (20.05.2011 в 21:32)
 

у php как правило совсем другой функционал и развивается php намного быстрее
и это совсем разные вещи в принципе

  Ответить  
 
 автор: Абырвалг   (20.05.2011 в 21:42)   письмо автору
 
   для: Владимир22   (20.05.2011 в 21:32)
 

Ничего странного: в Javascript'e метод replace() работает только для строковых переменных, а в PHP - ещё и для массивов.
В общем, где-то так (кстати - буква И у Вас лишняя, для неё нет числового кода)
function kod (sl)
{
var zif = new Array ('94', '52', '9', '36', '42', '40', '97', '73', '53');
var buk = new Array ( 'а',  'б', 'в',  'г',  'д',  'е',  'ё',  'ж',  'з');
sl = ' ' + sl;
for (var j = 0, lj = zif.length; j < lj; j++)
   {
   var RE = new RegExp (' ' + zif [j] + ' ', 'g');
   sl = sl.replace (RE, ' ' + buk [j] + ' ');
   }

return sl.substr (1);;
}
dr = '94 36 97 53 42 '; var ok = kod (dr); alert ('|' + ok + '|');

И учтите: регулярное выражение - штука "тонкая". Здесь реализовано ТОЛЬКО для случая, что отдельные коды для букв в строке разделены пробелами и в конце строки есть пробел.
Если кодировать будете хотя бы чуть-чуть иначе - регулярку надо переписывать.

PS. http://slovari.yandex.ru/сиречь/значение/

  Ответить  
 
 автор: Владимир22   (20.05.2011 в 21:47)   письмо автору
 
   для: Абырвалг   (20.05.2011 в 21:42)
 

Абырвалг , спасибо преогромное, проверил - всё заработало. Сам бы долго возился, но до такого бы точно не дошёл, слаб ещё в javaScript. А про сиречь теперь тоже буду знать. Спасиб!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования