PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (1): [1]

> Найдено сообщений: 3
Aleks11 Отправлено: 20 Мая, 2018 - 21:55:19 • Тема: Посимвольная многократная замена в строке • Форум: Напишите за меня, пожалуйста

Ответов: 5
Просмотров: 95
Так в этом то и проблема, для не повторяющихся символов там всё гораздо тривиальнее. И я в процессе эти 2 дня именно это побороть не смог :\
Из-за этого в своём же примере привёл строку именно с двумя 'a' 'aza'
Aleks11 Отправлено: 20 Мая, 2018 - 15:59:14 • Тема: Посимвольная многократная замена в строке • Форум: Напишите за меня, пожалуйста

Ответов: 5
Просмотров: 95
Строитель пишет:
Aleks11, вы можете иначе сформулировать свой вопрос? Я лично ничего не понял... Что на что заменять? Зачем тут цикл? Чем strtr() не угодил?


Напишу сразу своим кодом который не совсем корректно работает:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $result['a'] = "1-2-3-4";
  3. $result['z'] = "5-6-7";
  4. $array_a = explode('-', $result['a']);
  5. $array_z = explode('-', $result['z']);
  6.  
  7. $str = "aza";
  8. $len_str = strlen($str);
  9. $domain_array = str_split($str);
  10.  
  11. $len_array_a = count($array_a);
  12. $len_array_z = count($array_z);
  13.  
  14.  
  15. for ($i=0; $i<$len_str; $i++) {
  16.         switch ($domain_array[$i]) {
  17.                 case 'a':
  18.                         for ($y=0; $y<$len_array_a; $y++) {
  19.                                 $domain_array[$i] = preg_replace("#a#u", $domain_array[$i], $array_a[$y]);
  20.                                 $str = implode($domain_array);
  21.                                 echo '<br>';
  22.                                 var_dump($str);
  23.                         };
  24.                         break;
  25.                 case 'z':
  26.                         for ($y=0; $y<$len_array_z; $y++) {
  27.                                 $domain_array[$i] = preg_replace("#z#u", $domain_array[$i], $array_z[$y]);
  28.                                 $str = implode($domain_array);
  29.                                 echo '<br>';
  30.                                 var_dump($str);
  31.                         };
  32.                         break;
  33.         }
  34. }
  35.  


На выходе вардампами выдаётся:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. string(3) "1za"
  3. string(3) "2za"
  4. string(3) "3za"
  5. string(3) "4za"
  6. string(3) "45a"
  7. string(3) "46a"
  8. string(3) "47a"
  9. string(3) "471"
  10. string(3) "472"
  11. string(3) "473"
  12. string(3) "474"
  13.  


Нужно чтобы выдавалось:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. string(3) "1za"
  3. string(3) "2za"
  4. string(3) "3za"
  5. string(3) "4za"
  6. string(3) "a5a"
  7. string(3) "a6a"
  8. string(3) "a7a"
  9. string(3) "az1"
  10. string(3) "az2"
  11. string(3) "az3"
  12. string(3) "az4"
  13.  

(Добавление)
Если попытаться переформулировать задачу, то звучит она так:
Есть слово "abrakadabra" мы посимвольно анализируем его, то есть в первой итерации цикла - первую букву. Есть некий алфавит смены одной буквы к примеру "a" на перечень цифр "1-2-3-4" и после каждой смены мы должны выводить каждый раз слово. Я не знаю как ещё описать Недовольство, огорчение
Aleks11 Отправлено: 20 Мая, 2018 - 01:58:54 • Тема: Посимвольная многократная замена в строке • Форум: Напишите за меня, пожалуйста

Ответов: 5
Просмотров: 95
Я пытался это сделать 2 суток и выгорел от этой задачи на столько что уже не могу трезво мыслить пытаясь реализовать её. Буду молиться за того человека кто даст готовое решение.
Задача:
Есть стринг
$str = 'kd';

Есть массив кириллитических символов в каждому латинскому типо:
$arr['k'] = ['ы', 'п', 'ш'];
$arr['d'] = ['з', 'н', 'к'];
и т.д. То есть каждую латинскую букву в $str нужно заменить на несколько русских, чтобы на выходе в данной ситуации было что-то вроде:
ыd
пd
шd



(Добавление)
Забыл добавить, чтобы если в входной латинской строке повторяются символы, они разом не заменялись, типо:

$str = 'kdk';

Есть массив кириллитических символов в каждому латинскому типо:
$arr['k'] = ['ы', 'п', 'ш'];
$arr['d'] = ['з', 'н', 'к'];

Вывод не должен быть таким:
ыdы
пdп
шdш
kзk
kнk
kкk

А должен быть таким:
ыdk
пdk
шdk
kзk
kнk
kкk
kdы
kdп
kdш

То есть по идее нужно именно при каждой итерации в цикле делать замену только одного символа.

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB