Php ldap_explode_dn结果的奇怪编码

Php ldap_explode_dn结果的奇怪编码,php,encoding,ldap,Php,Encoding,Ldap,使用ldap\u explode\u DN转换DN字符串后,一些字符(在我的例子中是西里尔字母)被转换为我无法识别的其他编码 例如ldap\u explode\u dn('cn=tt,ou=groups,o=ц1,ou=realms,dc=uvf,dc=local',0)返回 Array ( [0] => tt [1] => groups [2] => \D1\861 [3] => realms [4] => uvf

使用
ldap\u explode\u DN
转换DN字符串后,一些字符(在我的例子中是西里尔字母)被转换为我无法识别的其他编码

例如
ldap\u explode\u dn('cn=tt,ou=groups,o=ц1,ou=realms,dc=uvf,dc=local',0)返回

Array
(
    [0] => tt
    [1] => groups
    [2] => \D1\861
    [3] => realms
    [4] => uvf
    [5] => local
)
如您所见,
ц
字符已转换为
\D1\86
。我猜它是两字节UTF-8,但我不知道如何解码它

我尝试过很多方法,比如
iconv
mb\u convert\u编码
,但都没有成功

我的问题是-这种编码是什么,以及如何在PHP中使用它?

我发现它为您的问题提供了解决方案


编辑: 自PHP 5.5以来,preg_replace不推荐使用修饰符e,因此下面是一个基于链接用户注释的preg_replace_回调解决方案:

function myldap_explode_dn( $dn, $with_attrib ) {
    $result = ldap_explode_dn( $dn, $with_attrib );

    //translate hex code into ascii again
    foreach ( $result as $key => $value ) {
        $result[ $key ] = preg_replace_callback(
            "/\\\([0-9A-Fa-f]{2})/",
            function ( $matches) {
                return chr( hexdec( $matches[1] ) );
            },
            $value
        );
    }

    return ( $result );
}

谢谢你的回答,我看到了这个解决方案,但我认为这是一个解决办法。我将等待一天的其他答案,如果没有更好的解决方案,我会接受你的答案(我怀疑实际上是否有)。