如何在PHP中对UTF-8进行strtr操作?

8
我正在寻找一款适用于PHP的UTF-8兼容的strtr工具。
2个回答

18
function strtr_utf8($str, $from, $to) {
    $keys = array();
    $values = array();
    preg_match_all('/./u', $from, $keys);
    preg_match_all('/./u', $to, $values);
    $mapping = array_combine($keys[0], $values[0]);
    return strtr($str, $mapping);
}

6
请考虑第二个参数也可以是一个数组用于映射。 - Gumbo
我并不需要那个,但这样会更加忠实于 strtr 的签名。 - joeforker

3
function strtr_utf8($str, $from, $to)
{
    $keys = array();
    $values = array();
    if(!is_array($from))
    {
        // 将字符串按 Unicode 字符分割成数组
        preg_match_all('/./u', $from, $keys);
        preg_match_all('/./u', $to, $values);
        // 将两个数组合并成一个键值对应的数组
        $mapping = array_combine($keys[0], $values[0]);
    }else
        $mapping=$from;
    
    // 使用键值对应的数组替换字符串中的字符
    return strtr($str, $mapping);
}

我稍微修改了joeforker的函数,以便将第二个参数作为替换对数组返回。


它运行得很好。应该将被接受的答案移动到这个位置。 - Jose Gómez

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接