这个PHP代码有什么问题?

时间:2011-07-05 20:49:29

标签: php

$regular = explode(',', "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");
$custom =  explode(',', "y,p,l,t,a,v,k,r,e,z,g,m,s,h,u,b,x,n,c,d,i,j,f,q,o,w");
$albhed1 = str_replace($regular, $custom, $input);?><div id="hi"><?php
if($_POST['albhed']){echo $albhed1;}{}

我遇到的问题是,当用户点击发送时,该字母不代表应该是什么。因此,如果输入a,则应显示y,如果键入c,则应显示l。奇怪的是它适用于字母u,v,w,x,y,z,即i,j,f,q,o,w,而不是其余字母。

正在定义$ input:

<textarea name="textarea" id="textarea">
 </textarea>

有人有任何建议吗?

4 个答案:

答案 0 :(得分:5)

您的代码不起作用,因为$res = str_replace(array("x", "y"), array("y", "b"), $input)就像:

$res = str_replace("x", "y", $input);
$res = str_replace("y", "b", $input);

这意味着xyz变为bbb,因为:

  1. xyz转换为yyz
  2. yyz已翻译为bbz
  3. 您最好使用strtr翻译字符:

    $regular = "abcdefghijklmnopqrstuvwxyz";
    $custom =  "ypltavkrezgmshubxncdijfqow";
    $albhed1 = strtr($input, $regular, $custom);
    

答案 1 :(得分:1)

我相信你会多次替换字母。例如,如果用户输入'a',它将被'y'替换,然后'y'将被'o'替换。这也解释了为什么列表中的最后一个字母有效,而其他字母则失败。

答案 2 :(得分:0)

我猜这是你想要做的事情:

<?php
$regular = explode(',', "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");
$custom = explode(',', "y,p,l,t,a,v,k,r,e,z,g,m,s,h,u,b,x,n,c,d,i,j,f,q,o,w");
?>

<div id="hi">
    <?php
    if($input = $_POST['albhed']){
        echo str_replace($regular, $custom, $input);
    }
    ?>
</div>

还有......谁不只是?

<?php
$regular = array('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');
$custom = array('y','p','l','t','a','v','k','r','e','z','g','m','s','h','u','b','x','n','c','d','i','j','f','q','o','w');
?>

编辑:

哦,当然每个人都说的是......被替换的字母正在被替换。

快速思考:您可以尝试用大写字母替换所有字母,然后使用strtolower()函数。

答案 3 :(得分:0)

<?php

    $regular = explode(',', "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");

    $custom =  explode(',', "y,p,l,t,a,v,k,r,e,z,g,m,s,h,u,b,x,n,c,d,i,j,f,q,o,w");

    $albhed1 = str_replace($regular, $custom, $input);

?>

<div id="hi">

    <?php

        if($_POST['albhed']) {

            echo $albhed1;
        }

    ?>

</div>

这是重新格式化的。试着扔进去,看看会发生什么。如果这不起作用,你会得到什么样的错误?什么是样本输入?什么是所需的输出?

您可能还想了解str_replace功能的工作原理。

特别是这个例子:

// Outputs F because A is replaced with B, then B is replaced with C, and so on...
// Finally E is replaced with F, because of left to right replacements.
$search  = array('A', 'B', 'C', 'D', 'E');
$replace = array('B', 'C', 'D', 'E', 'F');
$subject = 'A';
echo str_replace($search, $replace, $subject);