Заменить буквы слова на зеркальные

162
12 ноября 2021, 07:40

Например дано слово apple. Нужно заменить буквы данного слова на зеркальные:

a->z
p->k
p->k
l->o
e->v

На выходе должно получиться слово zkkov

Мой код:

<?php
$original = ['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'];
$replace = array_reverse($original);
$user_input = ['Apple'];
for ($i = 0; $i < count($user_input); $i++) {
    $user_input_new = str_ireplace($original, $replace, $user_input);    
}
var_dump($user_input_new);

Вывод:

array(1) {
  [0]=>
  string(5) "akkle"
}
Answer 1
$original =['1'=>'a', '2'=>'b', '3'=>'c', '4'=>'d', '5'=>'e', '6'=>'f', '7'=>'g', '8'=>'h', '9'=>'i', '10'=>'j', '11'=>'k', '12'=>'l', '13'=>'m', '14'=>'n', '15'=>'o', '16'=>'p', '17'=>'q', '18'=>'r', '19'=>'s', '20'=>'t', '21'=>'u', '22'=>'v', '23'=>'w', '24'=>'x', '25'=>'y', '26'=>'z'];
$str='apple';
$array = str_split($str);
foreach ($array as $key => $value) {
    foreach ($original as $key1 => $value1) {
        if($value==$value1){
            $at[]=$original[abs($key1-'27')];
        }
    }
}
$com = implode("", $at);
print_r($com);
Answer 2

// второй вариант, на основе комментариев (как указать лимит замен для str_ireplace() я так и не нашел)

<?php
    $search = ['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'];
    $user_input = 'Aa Bb Cc Dd Ee Ff Gg Hh Ii Jj Kk Ll Mm Nn Oo Pp Qq Rr Ss Tt Uu Vv Xx Yy Zz';
    $trans = array_combine($search, array_reverse($search));
    $res = strtr(strtolower($user_input), $trans);
    echo $res; // zz yy xx ww vv uu tt ss rr qq pp oo nn mm ll kk jj ii hh gg ff ee cc bb aa
Answer 3

Самый красивый вариант из выше представленных:

$original = ['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'];
$replace = array_reverse($original);

echo strtr('apple', array_combine($original, $replace));
READ ALSO
Как узнать имя вызывающего метода через рефлексию в Java

Как узнать имя вызывающего метода через рефлексию в Java

Нужно написать функцию, которая бы вернула полное имя класса и имя вызывающей функции в процессе выполненияПолное имя класса я получаю, а как...

207
Не делается дамп памяти Java, хотя все указано правильно

Не делается дамп памяти Java, хотя все указано правильно

У меня случается утечка памяти и сервер падает с Out of Memory Error

118
Как поменять настройки Hikari Connection Pool

Как поменять настройки Hikari Connection Pool

Суть проблемы: у меня есть файлproperties, в нем лежат все данные необходимые для настройки конекшн пула, также есть конфиг файл который считывает...

291
Создание объекта без ключевого слова new

Создание объекта без ключевого слова new

Если в Java для выделения памяти под новый объект используют ключевое слово new, то почему в данной ситуации, при создании экземпляра класса...

140