@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

Понимаю, что нужно через массив, но не соображу как именно.
Спасибо.
  • Вопрос задан
  • 97 просмотров
Решения вопроса 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;
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы