使用数组 PHP 交换两个字符串
Swap two strings using array PHP
我正在尝试将字符串中的 "e" 替换为 "E" 并将 "E" 替换为 "e",但似乎无法正常工作。我正在使用数组:
$original = "e and E";
$swap = array(
"E" => "e",
"e" => "E");
$edited= str_replace(array_keys($swap), array_values($swap), $original);
echo $original. "<br>";
echo $edited;
它returns "E and E"。我想return"E and e",你能帮帮我吗?
虽然 gotcha,但这是预期的行为。您将所有 E
替换为 e
,然后将所有 e
替换为 E
。所以结果是 E and E
.
您需要分两次执行此操作,使用占位符或使用 strtr()
。正如 mario 评论的那样,swap 字符串的适当函数是 strtr()
:
$edited = strtr($original, $swap);
str_replace
可以接受一个数组,但它并没有像你期望的那样工作。例如,您可以使用它来替换所有出现的 "e" 和 "E" 以及所有 "a" 和 "A" 但它是按顺序 而不是同时。因此,在您的代码中,"e and E" 首先替换为 "e and e",然后替换为 "E and E"。
改为这样做:
$original = "e and E";
$edited = str_replace("e", "#", $original);
$edited = str_replace("E", "e", $edited);
$edited = str_replace("#", "E", $edited);
echo $original. "<br>";
echo $edited;
您需要使用临时令牌进行两次传递:
$original = "e and E";
$swap = array(
"E" => "$",
"e" => "E",
"$" => 'e',
);
$edited= str_replace(array_keys($swap), array_values($swap), $original);
echo $edited;
我正在尝试将字符串中的 "e" 替换为 "E" 并将 "E" 替换为 "e",但似乎无法正常工作。我正在使用数组:
$original = "e and E";
$swap = array(
"E" => "e",
"e" => "E");
$edited= str_replace(array_keys($swap), array_values($swap), $original);
echo $original. "<br>";
echo $edited;
它returns "E and E"。我想return"E and e",你能帮帮我吗?
虽然 gotcha,但这是预期的行为。您将所有 E
替换为 e
,然后将所有 e
替换为 E
。所以结果是 E and E
.
您需要分两次执行此操作,使用占位符或使用 strtr()
。正如 mario 评论的那样,swap 字符串的适当函数是 strtr()
:
$edited = strtr($original, $swap);
str_replace
可以接受一个数组,但它并没有像你期望的那样工作。例如,您可以使用它来替换所有出现的 "e" 和 "E" 以及所有 "a" 和 "A" 但它是按顺序 而不是同时。因此,在您的代码中,"e and E" 首先替换为 "e and e",然后替换为 "E and E"。
改为这样做:
$original = "e and E";
$edited = str_replace("e", "#", $original);
$edited = str_replace("E", "e", $edited);
$edited = str_replace("#", "E", $edited);
echo $original. "<br>";
echo $edited;
您需要使用临时令牌进行两次传递:
$original = "e and E";
$swap = array(
"E" => "$",
"e" => "E",
"$" => 'e',
);
$edited= str_replace(array_keys($swap), array_values($swap), $original);
echo $edited;