@yellow_pus

Как заменить буквы в предложении на (рандомные) цифры?

Допустим, есть $x = 'hello world' . Я хотел бы 1)заменить все буквы на рандомные цифры(от 1 до 100) и 2)заменить все буквы на значение их в алфавитном порядке(например a -> 1, b ->2 и т.д)
Если насчет первого у меня есть хоть какие то мысли: например
<?php
$x = 'Hello world'; //задаем строку
for($i = 0;$i<strlen($x);$i++){ // задаем некий цикл, который проходит по всем элементам строки $x
    echo str_replace($x[$i], rand(1,100),$x); //с помощью str_replace() заменяем по идее все буквы на рандомные числа
}

так же пробовал разбить эту строку на массив с помощью ф-ии str_split, но опять же, ничего не получалось(появлялось много массивов)
  • Вопрос задан
  • 162 просмотра
Пригласить эксперта
Ответы на вопрос 2
@margaret_murka
не очень понятно, зачем разбивать строку...
не думаю, что в php есть готовые функции для получения номера буквы в алфавите)
можно создать массив с алфавитом, ключ будет номером
проходить так же циклом по строке, находить в массиве букву и заменять значение в строке на ключ
// вопрос в том будет ли верхний, нижний регистр, числа, пробелы, но это детали в принципе
Ответ написан
Комментировать
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
В общем случае можно составить словарь замен, и применить его к исходной строке функцией strtr

$replaces = [
    'a' => 1,
    'b' => 2,
    //и тд
    'я' => 998,
    'Я' => 999,
];

$result = strtr($str, $replaces);


<?php
$str = 'Hello world';

//Array([a] => 0, [b] => 1, [c] => 2, [d] => 3 ..  [z] => 25)
$dict = array_flip(range('a', 'z'));

$result = strtr(
    mb_strtolower($str),
    $dict,
);

var_dump($result); //string(18) "74111114 221417113"
Ответ написан
Ваш ответ на вопрос

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

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