@User782

Как перебрать строку и вывести на экран нужное?

Есть строка:
$s = '|1||2||3||7|9|';
Цифры ровны таким значениям:
1 = q; 2 = w; 3 = e; 4 = r; 5 = t; 6 = y; 7 = u; 8 = i; 9 = o;
Нужно вывести так:
q, w, e, u, o

Понимаю, что нужно через массив, но не соображу как именно.
Спасибо.
  • Вопрос задан
  • 88 просмотров
Решения вопроса 1
@eandr_67
web-программист (*AMP, Go, JavaScript, вёрстка).
$s = '|1||2||3||7|9|';
echo implode(',', array_map(function ($v) { return ' qwertyuio'[$v]; }, preg_split('#\|+#', $s, -1, PREG_SPLIT_NO_EMPTY)));
preg_split - получаем массив чисел, содержащихся в $s
array_map - используется для преобразования числа в односимвольные строки
implode - склеиваем массив строк в одну строку с заданным разделителем (запятая)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
0xD34F
@0xD34F
preg_match_all('~\d+~', $s, $match);
echo implode(', ', array_map(fn($n) => '!qwertyuio'[$n], $match[0]));
Ответ написан
kawabanga
@kawabanga
Бью себя по рукам за каждый ответ на глупый вопрос
Паттерн внутри немного нечитаем по |, поэтому отделяем цифры любым доступным способом, в данном случае вот так. Обратите внимание что двойной пробел должен сработать раньше чем одинарный. Заметьте, что данный способ это просто удар в лоб, без использования регулярок.

$s = '|1||2||3||7|9|';
       $out =   trim (str_replace('|',' ', $s));
       $out =  str_replace(
           [1,2,3,7,9,'  ',' '],
           ['q','w','e','u','o',',',','],
           $out
       );
       echo $out;
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
LAPTOP.RU Москва
от 150 000 до 190 000 ₽
от 80 000 до 120 000 ₽
LAPTOP.RU Кострома
от 25 000 до 65 000 ₽
06 мар. 2021, в 02:23
120000 руб./за проект
06 мар. 2021, в 00:29
500 руб./за проект
05 мар. 2021, в 23:28
1200 руб./за проект