//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替换仅在Alpha时效果很好(例如:TEST!@#test = 7160767124452671607671
,这很完美,但是一旦数字起作用,$print
应该输入{"username":"4A6B7C2D6F"}
,如果输入{ {1}}当前输出为12345
答案 0 :(得分:1)
str_replace
从头开始进行每次替换扫描,并将替换先前替换的部分内容。而是使用strtr
,不会。
最长的键将首先尝试。替换子字符串后,将不再搜索其新值。
例如:
echo strtr("12345", [
1 => '4A',
2 => '6B',
3 => '7C',
4 => '2D',
5 => '6F'
]);
会给您:
4A6B7C2D6F
答案 1 :(得分:0)
欢迎使用StackOverflow!
我在PHP.net官方文档中找到了有关您的问题的一些信息。
警告
替换订单陷阱
由于str_replace()从左到右替换,它可能替换了 进行多次替换时先前插入的值。也可以看看 本文档中的示例。
在您的情况下,首先将1
替换为4A
,然后将4
中的4A
替换为2D
,结果是2DA
和之后,它似乎可以正确替换所有内容。
编码愉快!
编辑:按照Paul的回答所示使用strtr,将为您提供所需的结果。