Преобразовывать персонажей; как от А до В, от В до С,

Я хочу иметь короткий и простой способ заменить персонажа:
От А до Б, от В до С, от Z до А, … в PHP.

Я уже пробовал это:

$pwd = "Abc";
for($char = ord('A'); $char <= ord('Z'); $char++) {
$newc = $char+1;
if($newc > 90)
$newc = 65;
$pwd = str_replace(chr($char), chr($newc), $pwd);
$pwd = str_replace(chr($char+32), chr($newc+32), $pwd);
}
echo $pwd;

Но когда я использую его, я получаю только «Ааа» …

-6

Решение

$str = 'a';
echo ++$str; // prints 'b'
0

Другие решения

Это должно работать для вас:

Здесь я просто str_split() строка в массив, а затем пройти через каждый символ с array_map(). Там я проверяю, является ли это строчная или прописная буква.

Если да, я просто возвращаю увеличенный символ, и если он переходит zZ Я только что вернулся aA,

В конце я просто implode() массив снова в строку.

<?php

$str = "Aac";

$str = implode("", array_map(function($v){
if(ord($v) >= 65 && ord($v) <= 90)
return (++$v > 90 ? char(65) : $v);
elseif(ord($v) >= 97 && ord($v) <= 122)
return (++$v > 122 ? char(97) : $v);
else
return $v;
}, str_split($str)));

echo $str;

?>

выход:

Bbd
0

Вот простой цикл, который делает эту работу:

// A function to replace uppercase characters in a string with
// the next letter in the alphabet

function replace($str) {
$len = strlen($str);

for ($i = 0; $i < $len; ++$i) {
// Check if the current character is an uppercase letter

if (ctype_upper($str[$i])) {
if ($str[$i] == 'Z') {
// If it is a "Z", simply make it an "A"
$str[$i] = 'A';
}
else {
// If it is anything else, just get the next
// character from the ASCII table

$str[$i] = chr(ord($str[$i]) + 1);
}
}
}

return $str;
}

Вы можете использовать это так:

echo replace('HELLO, YOU! ABCDEFGH...XYZ');

Это будет выводить IFMMP, ZPV! BCDEFGHI...YZA как и ожидалось.

Вы можете прочитать больше о ctype_upper Вот: http://php.net/ctype-upper — это в основном функция для проверки, является ли строка или символ прописными или нет.

chr а также ord просто преобразовать код ASCII в символ и наоборот. Прочитайте официальную документацию, если необходимо: http://php.net/ord а также http://php.net/chr.

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector