我想對字符串執行此搜索和替換,例如password
。如何用「d」替換「a」,用「e」替換「b」,用「f」替換「c」。 。 。 「x」帶「a」,「y」帶「b」,「z」帶「c」?
正如您從問題中可以理解的那樣,替換後字符串應該變成sdvvzrug
。
但不幸的是下面的代碼輸出bbbbcaab
:
$search = range("a", "z");
$replace = array_merge(range("d", "z"), range("a", "c"));
echo str_replace($search, $replace, "password");
什麼可導致此問題?起初我懷疑使用數組中str_replace
,所以我用了一個循環,並試圖一次更換一個字符:
$search = range("a", "z");
$replace = array_merge(range("d", "z"), range("a", "c"));
$str = "password";
for($i = 0; $i < 26; $i++)
{
$str = str_replace($search[$i], $replace[$i], $str);
}
echo $str;
要我徹底失望,結果仍然相同。我做錯了什麼,我該如何取得正確的結果?
看到一個正確的實現:http://www.php.net/manual/en/function.str-rot13.php#107475'str_rot('password',3);' – Federkun
如果你還喜歡做字符替換,嘗試使用strtr而不是str_replace。 – TwilightSun
這通常稱爲[凱撒密碼](https://en.wikipedia.org/wiki/Caesar_cipher)。 – icktoofay