Signatur
Beschreibung
Die Klasse Gender\Gender ist Teil der PECL-Erweiterung gender und ermöglicht es, anhand eines Vornamens das wahrscheinliche biologische Geschlecht zu ermitteln. Intern nutzt die Erweiterung eine umfangreiche Namensdatenbank, die viele europäische und einige außereuropäische Sprach- und Kulturräume abdeckt.
Typische Einsatzgebiete sind die automatische Anredebestimmung in E-Mail-Systemen, CRM-Anwendungen oder bei der Verarbeitung von Nutzerdaten, wenn nur der Vorname bekannt ist. Durch die Angabe eines optionalen Ländercodes kann die Treffsicherheit erhöht werden, da manche Namen je nach Region unterschiedlich belegt sind.
Die Klasse bietet die Methode get(), die einen Vorname sowie optional einen Ländercode entgegennimmt und eine Ganzzahl-Konstante zurückgibt, z. B. Gender\Gender::IS_MALE, Gender\Gender::IS_FEMALE, Gender\Gender::IS_MOSTLY_MALE, Gender\Gender::IS_MOSTLY_FEMALE, Gender\Gender::IS_UNISEX_NAME oder Gender\Gender::IS_A_COUPLE. Wenn kein Eintrag gefunden wird, wird Gender\Gender::IS_UNKNOWN zurückgegeben.
Die Erweiterung muss über PECL installiert sein (pecl install gender). Sie ist nicht im Standard-PHP-Lieferumfang enthalten und steht vorrangig für PHP auf Unix-ähnlichen Systemen zur Verfügung.
Beispiele
Geschlecht eines Vornamens ermitteln
<?php
// Voraussetzung: PECL-Erweiterung 'gender' ist installiert
$gender = new Gender\Gender();
$result = $gender->get('Maria');
switch ($result) {
case Gender\Gender::IS_FEMALE:
echo 'Weiblich';
break;
case Gender\Gender::IS_MALE:
echo 'Männlich';
break;
case Gender\Gender::IS_MOSTLY_FEMALE:
echo 'Überwiegend weiblich';
break;
case Gender\Gender::IS_MOSTLY_MALE:
echo 'Überwiegend männlich';
break;
case Gender\Gender::IS_UNISEX_NAME:
echo 'Unisex';
break;
case Gender\Gender::IS_A_COUPLE:
echo 'Paarname';
break;
default:
echo 'Unbekannt';
}
Geschlecht mit Länderkennung bestimmen und Anrede ableiten
<?php
// Ländercode für Deutschland: Gender\Gender::GERMANY
$gender = new Gender\Gender();
$names = ['Thomas', 'Andrea', 'Alex', 'Unbekannt123'];
foreach ($names as $name) {
$result = $gender->get($name, Gender\Gender::GERMANY);
if ($result === Gender\Gender::IS_MALE || $result === Gender\Gender::IS_MOSTLY_MALE) {
$anrede = 'Herr';
} elseif ($result === Gender\Gender::IS_FEMALE || $result === Gender\Gender::IS_MOSTLY_FEMALE) {
$anrede = 'Frau';
} else {
$anrede = 'Guten Tag';
}
echo "Name: $name => Anrede: $anrede\n";
}
// Wichtig · Fallstricke
Installation: Die Erweiterung ist nicht standardmäßig in PHP enthalten. Installation über PECL: pecl install gender. Anschließend muss extension=gender.so in der php.ini aktiviert werden.
Genauigkeit: Die Ergebnisse sind statistischer Natur und basieren auf einer Datenbank europäischer und einiger weiterer Vornamen. Vornamen aus anderen Kulturkreisen oder Fantasie-Namen führen häufig zu IS_UNKNOWN. Die Ergebnisse sollten daher nicht als absolute Wahrheit behandelt werden.
Datenschutz: Bei der Verarbeitung von Personennamen sind die einschlägigen Datenschutzbestimmungen (z. B. DSGVO) zu beachten. Die Ableitung des Geschlechts aus einem Namen gilt als Verarbeitung personenbezogener Daten.
Verfügbare Klassenkonstanten (Länder): Gender\Gender::ANY_COUNTRY, Gender\Gender::GERMANY, Gender\Gender::AUSTRIA, Gender\Gender::FRANCE, Gender\Gender::GREAT_BRITAIN, Gender\Gender::USA u. v. m.