假设我有以下字符串:
$string = 'xxyyzz';
然后我有一个这样的替换数组:
$subs = ['xy'];
意思是在我的字符串中,每个 x 应该替换为 y ,每个 y 都应该替换为 x 。假设我的替换数组只能包含要在我的 $ string 中替换的字符对。
我该怎么做?
我尝试通过以下方式使用 str_replace ,但这不起作用:
foreach ($subs as $sub) {
$sub_arr = str_split($sub);
$reversed_sub_arr = array_reverse($sub_arr);
$output = str_replace($sub_arr, $reversed_sub_arr, str_split($string));
}
$output = implode('', $output);
但是输出显示了 xxxxzz
输出应为 yyxxzz
感谢您的帮助
答案 0 :(得分:2)
这适合您的情况
$string = 'xxyyzz';
$subs = ['xy'];
foreach ($subs as $sub) {
$sub_arr = str_split($sub);
$output = strtr($string, array($sub_arr[0]=>$sub_arr[1], $sub_arr[1]=>$sub_arr[0]));
}
echo $output; //yyxxzz
答案 1 :(得分:1)
如果$subs
数组中的两个项目(例如$subs = ['xy', 'dz']
)则扩展@Orgil答案
$string = $output = 'xxyyzz';
$subs = ['xy', 'dz'];
foreach ($subs as $sub) {
$sub_arr = str_split($sub);
$output = strtr($output, array($sub_arr[0]=>$sub_arr[1], $sub_arr[1]=>$sub_arr[0]));
}
echo $output;