Start · Sprachen · PHP · Referenz · ldap_8859_to_t61

ldap_8859_to_t61

Funktion

Wandelt einen String von ISO-8859-Zeichenkodierung in T.61-Zeichenkodierung um, wie sie in LDAP-Verzeichnissen verwendet wird.

seit PHP 4.0.2 Kategorie: misc

Signatur

ldap_8859_to_t61(string $value): string

Beschreibung

ldap_8859_to_t61 konvertiert einen String, der in der ISO-8859-1-Zeichenkodierung (Latin-1) vorliegt, in die T.61-Zeichenkodierung. T.61 ist ein älterer Zeichensatz, der in LDAP-Protokollen der Version 2 (LDAPv2) für bestimmte Attributwerte wie description oder cn verwendet wurde.

Diese Funktion wird benötigt, wenn man mit älteren LDAP-Verzeichnissen kommuniziert, die noch LDAPv2 einsetzen und T.61-kodierte Zeichenketten erwarten. Moderne LDAP-Server und das weit verbreitete LDAPv3 verwenden hingegen UTF-8, sodass diese Funktion heute nur noch in Legacy-Szenarien relevant ist.

Das Gegenstück zu dieser Funktion ist ldap_t61_to_8859, welches die umgekehrte Konvertierung von T.61 nach ISO-8859-1 durchführt. Beide Funktionen arbeiten auf Byte-Ebene und sind nicht für allgemeine Zeichensatzkonvertierungen geeignet – dafür sollte man mb_convert_encoding oder iconv bevorzugen.

Parameter

Name Typ Default Beschreibung
$value Pflicht string Der zu konvertierende String in ISO-8859-1-Kodierung, der in T.61-Kodierung umgewandelt werden soll.

Rückgabewert

Typ
string
Beschreibung
Gibt den konvertierten String in T.61-Kodierung zurück.

Beispiele

Attributwert für LDAPv2-Server vorbereiten

<?php
// Ein ISO-8859-1-kodierter Name mit Umlauten
$name = "Müller";

// Konvertierung in T.61 für einen alten LDAPv2-Server
$t61Name = ldap_8859_to_t61($name);

// Den konvertierten Wert für LDAP verwenden
$ldap = ldap_connect("ldap://legacy-server.example.com");
if ($ldap) {
    ldap_bind($ldap, "cn=admin,dc=example,dc=com", "secret");
    $entry = [
        "cn"          => $t61Name,
        "objectclass" => "person",
        "sn"          => $t61Name,
    ];
    ldap_add($ldap, "cn={$t61Name},dc=example,dc=com", $entry);
    ldap_close($ldap);
}
?>

Hin- und Rückkonvertierung demonstrieren

<?php
$original = "Ärger mit Björn";

// ISO-8859-1 -> T.61
$t61 = ldap_8859_to_t61($original);
echo "T.61: " . bin2hex($t61) . PHP_EOL;

// T.61 -> ISO-8859-1 (Rückkonvertierung)
$back = ldap_t61_to_8859($t61);
echo "Zurück: " . $back . PHP_EOL;

// Prüfen, ob der Originalwert wiederhergestellt wurde
echo ($original === $back) ? "Identisch" : "Unterschiedlich";
?>
Zurück: Ärger mit Björn Identisch

// Wichtig · Fallstricke

Veraltete Funktion: ldap_8859_to_t61 ist ausschließlich für den Einsatz mit LDAPv2-Servern relevant. Da LDAPv3 (RFC 4511) UTF-8 als Standardkodierung verwendet, wird diese Funktion in modernen Umgebungen kaum noch benötigt. Für neue Projekte sollte generell mb_convert_encoding oder iconv zur Zeichensatzkonvertierung eingesetzt werden.

Die Funktion ist Bestandteil der LDAP-Erweiterung und steht nur zur Verfügung, wenn PHP mit LDAP-Unterstützung kompiliert wurde (--with-ldap). In neueren PHP-Versionen (ab PHP 8.0) kann ihr Verhalten bei ungültigen Eingaben variieren – eine gründliche Eingabevalidierung ist empfehlenswert.