2015-05-09 109 views
-6

我想要一个简短而简单的方法来替换字符:
A到B,B到C,Z到A,...在PHP中。转换字符;如A到B,B到C,

我已经试过这样:

$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; 

但是当我使用它,我只得到 “AAA” ...

+1

我们不是一个代码写作服务。请向我们展示您已完成的工作/尝试以及您卡住的位置。 – Rizier123

+0

你能证明你所尝试过的吗? – rapvelopment

+0

我将它添加到主帖子中。 :) – LuucDev

回答

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

当然每个角色。我并不想为每个角色输入这一行...... ^^ – LuucDev

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_upperhttp://php.net/ctype-upper - 它基本上是一个函数,用于检查字符串或字符是否大写。

chrord只是将ASCII码转换成字符,反之亦然。如有必要,请阅读官方文件:http://php.net/ordhttp://php.net/chr

相关问题