如何在PHP中同时替换2个字符串(相互替换)

如何在PHP中同时替换2个字符串(相互替换),php,string,function,replace,Php,String,Function,Replace,我试图做的很简单,但我希望做得最有效,最好是使用php内置fns $str = '1234'; echo replace_function(array('1','3'),array('3','1'),$str); // output: 3214 str_replace、preg_replace将产生1214,这意味着它将遍历数组,替换匹配的字符串。我正在寻找一种同时“切换”这两个(或更多)字符串的解决方案 有什么想法吗? <?php $subject = '1234'; $resul

我试图做的很简单,但我希望做得最有效,最好是使用php内置fns

$str = '1234';
echo replace_function(array('1','3'),array('3','1'),$str);

// output: 3214
str_replace、preg_replace将产生1214,这意味着它将遍历数组,替换匹配的字符串。我正在寻找一种同时“切换”这两个(或更多)字符串的解决方案

有什么想法吗?


<?php

$subject = '1234';
$result = preg_replace('/(1)(2)(3)(4)/si', '$3$2$1$4', $subject);
var_dump($result);

?>
您可以将模式更改为更通用的模式,例如“/(\d)(\d)(\d)(\d)/”。


您可以将模式更改为更通用的模式,例如“/(\d)(\d)(\d)(\d)/”。

您需要字符串转换:


您需要字符串翻译:



这不是我想要的。我不知道被替换字符串的顺序。像3211123这样任意的东西应该无缝地变为1233321。这只适用于“1235”的特定情况。您不妨说$result='3214'使用“/(\d)(\d)(\d)/”将任何4位数字更改为“3214”,以获得“-2”而不是“谢谢”。很高兴知道strtr()。这不是我要找的。我不知道被替换字符串的顺序。像3211123这样任意的东西应该无缝地变为1233321。这只适用于“1235”的特定情况。您不妨说$result='3214'使用“/(\d)(\d)(\d)/”将任何4位数字更改为“3214”,以获得“-2”而不是“谢谢”。很高兴知道strtr()。@Sergi,+1,但一定要相信这个例子是从哪里来的,2,给出一个使用OP代码的例子总是很好的。注意误报。我知道应该有这样简单的事情。非常感谢你@Sergi,+1,但一定要相信你的例子来自哪里,2,给出一个使用OP代码的例子总是很好的。只是要注意误报。我知道应该有这样简单的事情。非常感谢你!
<?php
$trans = array("hello" => "hi", "hi" => "hello");
echo strtr("hi all, I said hello", $trans);
// = hello all, I said hi
?>