字符串php中的多字符替换

字符串php中的多字符替换,php,php-5.6,Php,Php 5.6,假设我有以下字符串: $string = 'xxyyzz'; 然后我有一个替换数组,如下所示: $subs = ['xy']; 这意味着在我的字符串中,每个x都应该替换为y,每个y都应该替换为x。假设我的替换数组只能包含我的$string中要替换的字符对 我该怎么做呢 我尝试了使用str\u replace以下方法,但不起作用: foreach ($subs as $sub) { $sub_arr = str_split($sub); $reversed_sub_arr =

假设我有以下字符串:

$string = 'xxyyzz';
然后我有一个替换数组,如下所示:

$subs = ['xy'];
这意味着在我的字符串中,每个x都应该替换为y,每个y都应该替换为x。假设我的替换数组只能包含我的$string中要替换的字符对

我该怎么做呢

我尝试了使用str\u 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


感谢您的帮助

这对您的案例有效

  $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

这对你的案子有效吗

  $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

如果
$subs
数组中的两个项与
$subs=['xy','dz']类似,则扩展@Orgil answer

$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;

如果
$subs
数组中的两个项与
$subs=['xy','dz']类似,则扩展@Orgil answer

$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;

你好。如果我在数组subs中只有一个项,那么这是可行的,如果我有两个项,比如$subs=['xy','dz'],其中x应该被y替换,y应该被x替换,d应该被z替换,z应该被dt替换,在交换xxyyyddzzhi之后,在->xxyyzzdd之前也有效。如果我在数组subs中只有一个项,那么这是可行的,如果我有两个项,比如$subs=['xy','dz'],其中x应该替换为y,y应该替换为x,d应该替换为z,z应该替换为dt,在交换xxyyddzz之后,在->xxyyzzdd之前,z应该也有效