字符串php中的多个字符替换

时间:2018-11-01 05:12:37

标签: php php-5.6

假设我有以下字符串:

$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

感谢您的帮助

2 个答案:

答案 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;

Demo