如何在PHP中实现Perl的tr/a-zA-Z/h-za-gH-ZA-G/字符替换功能?
Perl tr 字符替换的PHP等效实现
Perl里的$pw =~ tr/a-zA-Z/h-za-gH-ZA-G/是固定偏移的字符替换规则:
- 小写字母:a-g 替换为 h-z,h-z 替换为 a-g
- 大写字母:A-G 替换为 H-Z,H-Z 替换为 A-G
PHP里可以直接用strtr()函数实现完全等效的功能,不需要手动编写冗长的映射数组,写法思路和Perl的tr保持一致:
$originalPassword = "ExamplePassword123"; // 定义源字符集和对应替换的目标字符集 $sourceChars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $targetChars = 'hijklmnopqrstuvwxyzabcdefgHIJKLMNOPQRSTUVWXYZABCDEFG'; // 执行替换 $encodedPassword = strtr($originalPassword, $sourceChars, $targetChars);
补充说明
strtr()会严格按照两个字符参数的位置一一对应替换,和Perl tr的行为完全匹配- 如果需要解码加密后的密码,只需将
$sourceChars和$targetChars的位置互换即可
内容的提问来源于stack exchange,提问作者Adrian Smith
相关产品推荐
相关产品推荐

