价值97和&是怎样的? 123来了?

时间:2014-11-03 17:27:15

标签: php

我是学习PHP的初学者。我正在浏览Stackoverflow中的一个帖子,其中一个字母移动了4个字符并显示结果。

这是代码:

<?php

    $code = 'string';

    $str = $code;
    $length = strlen($str);
    $result = '';
    $n = 0;
    for($i = 0; $i < $length; ++$i){
        $c = ord($str[$i]);
        if (97 <= $c && $c < 123) {                 
            $result.= chr(($c + $n + 7) % 26 + 97); 
        } else if(65 <= $c && $c < 91) {            
            $result.= chr(($c + $n + 13) % 26 + 65);
        } else {
            $result.= $str[$i];
        }
    }
    echo $result;

?>

然而,我完全不了解逻辑。值97和123是如何产生的? 援助表示感谢

非常感谢

3 个答案:

答案 0 :(得分:3)

97和123分别是字符a{的ASCII值。

字符{是过去的z,即122。

因此,if语句if (97 <= $c && $c < 123)检查字符$c是否为小写字母。

同样,else if(65 <= $c && $c < 91)会检查$c是否为大写字母。

请参阅ASCII Table

请注意,通过比较字符而不是ASCII值,可以更清楚地了解此代码的意图:

<?php
$str="$code";
$length=strlen($str);
$result = "";
$n=5;
$n=$n-1;

$lowercase = ord('a');
$uppercase = ord('A');
for($i = 0, $l = strlen($str); $i < $l; ++$i)
{
    $c = $str[$i];
    $o = ord($c);
    if ('a' <= $c && $c <= 'z') {
        $result.= chr(($o + $n + 7) % 26 + $lowercase);
    } else if('A' <= $c && $c <= 'Z') {
        $result.= chr(($o + $n + 13) % 26 + $uppercase);
    } else {
       $result.= $str[$i];
    }
}
echo $result;
?>

答案 1 :(得分:0)

检查字符在ASCII表上的ab之间 http://www.asciitable.com/

ord函数接受一个字符串并返回第一个(或唯一的)字节的无符号二进制值。在ASCII表上,这些值可以表示为字符。

完成处理后,该代码段会将字节值转换回chr的字符。

答案 2 :(得分:0)

chr函数采用整数并返回由该整数表示的ASCII字符。事实证明,与97相关联的字符是a,而与122相关联的字符是z,因此所有这一切都是确定字符是否是小写字母字符,即a-z。 / p>

您可以查看ASCII代码here