str_replace,只有当数字在其中时才给我错误的结果


//post data
$post = $_POST['username'];
//str replace
$print = str_replace([1,2,3,4,5], ['4A','6B','7C','2D','6F'], $post);
//prints result
echo "{"username":"" . $print . ""}";

str-replacement在只是alpha时工作得很好(例如:TEST!@#test = 7160767124452671607671,它只是完美的,但一旦数字开始发挥作用,事情就会变得混乱$print应该输出{"username":"4A6B7C2D6F"},如果输入12345,则当前输出为{"username":"2DA6B7C2D6F"}

欢迎使用StackOverflow!

我在PHP.net的官方文档中找到了一些关于您问题的信息。

注意

收到替换订单

由于str_replace((从左到右进行替换,因此它可能会替换进行多次替换时先前插入的值。另请参阅本文档中的示例。

在您的情况下,它首先用4A替换1,然后用2D替换4A中的4,得到2DA,然后它似乎正确地替换了所有内容。

编码快乐!

编辑:如Paul的回答所示使用strtr将得到您想要的结果。

最新更新