Tandil: Sinnvolle Abkürzung erstellen

Guten Abend (oder auch Morgen, je nach dem, wann ihr das lest),

ich habe vor aus einer Liste von Namen eine drei oder auch vier Zeichenlange Abkürzung zu erstellen.
Nun habe ich überlegt, falls der Name aus mehreren Wörtern besteht (das tun allerdings nur einige), dann möchte ich jeweils den ersten Buchstaben als Abkürzung verwenden. Falls nur ein Wort existiert, möchte ich aus den Buchstaben des Worten eine möglichst einzigartige Abkürzung machen (muss aber nicht wirklich einzigartig sein!). Deshalb dachte ich, dass man bestimmte Buchstaben, wie zum Beispiel das X und Y, die recht selten vorkommen, miteinbezieht, falls diese vorkommen.

Ich habe zumindest schon einmal eine Funktion gefunden, die den ersten Buchstaben eines Wortes herausfiltert:

function getAbkurzung($string) {  
$woerter= explode(" ", $string);  
$buchstaben= "";  
foreach ($woerter as $wert) {  
    $buchstaben.= substr($wert, 0, 1);  
}  
	return $buchstaben;  
}  

Sicherlich nicht die eleganteste Lösung, aber performance spielt keine große Rolle, da nur ich persönlich sie anwenden muss.

Nun könnte man ja noch in die Funktion miteinbauen, dass $woerter gezählt wird um halt nur bei mehr als einem Wort die Schleife durchzuführen.

Sollte man jetzt einfach mit
if (substr_count("x",$string) > 0) $buchstaben .= "X";

Man könnte allerdings auch primär die ersten beiden oder drei Buchstaben des Wortes nehmen, aber da sind doppelte Vorkommen häufiger, da es Buchstabenkombinationen gibt, die besonders häufig am Wortanfang vorkommen.

Kurzum, mein Problem ist hier eher nicht die Umsetzung in php (zumindest nicht anfänglich), sondern vielmehr wie man es sinnvoll angeht.

Ich hoffe einer hat eine Idee, die ich vielleicht noch nicht berücksichtigt habe.

  1. Hallo Tandil,

    Kurzum, mein Problem ist hier eher nicht die Umsetzung in php (zumindest nicht anfänglich), sondern vielmehr wie man es sinnvoll angeht.

    Du könntest den Anfangsbuchstaben, den letzten Buchstaben, einen möglichen speziellen Buchstaben (XYZQ) und einen random-Buchstaben nehmen.

    Dann hast du entweder 3- oder 4-stellige Abkürzungen.

    Oder du nimmst 2 random-Werte, falls XYZQ nicht vorkommt.

    ciao
    romy

  2. Hallo,

    ich habe vor aus einer Liste von Namen eine drei oder auch vier Zeichenlange Abkürzung zu erstellen.

    Kurzum, mein Problem ist hier eher nicht die Umsetzung in php (zumindest nicht anfänglich), sondern vielmehr wie man es sinnvoll angeht.

    Mein Ansatz wäre folgender:

    • Anfangsbuchstaben der Wörter übernehmen
    • Falls noch nicht 4 Zeichen voll: Endbuchstaben ebenfalls übernehmen (letzte zuerst)
    • Falls noch nicht 4 Zeichen voll: Vokale filtern und mit Rest auffüllen

    Albert - Albt
    Simone - Smne
    Ulf - Ulf
    Patrick Schmidt - PkSt
    Andrea Pia Meier - APMr
    Noch ein Name - NeNe
    ...

    Viele Grüße,
    Sebastian

    1. Moin,

      gute Methode. Ich war jetzt auch dabei, was mit Vokalen zu machen, da man meistens vor bzw. bei einem Vokal Luft holt um diese beispielsweise zu betonen. Da Vokale jedoch häufig vorkommen, nehme ich einfach den Buchstaben davor, weil dieser halt oft härter ausgesprochen wird.
      Ob sich das dann auch bewährt, wenn es ausländische Namen gibt, welche vielleicht kein Vokal benutzen, ist die Frage ;)

      1. Hallo,

        man kann da bestimmt noch viele Ideen sammeln und das ganze abrunden. Die Frage ist, was du erreichen möchtest. Vokale auszulassen bietet sich an, weil viele Wörter auch ohne noch recht gut lesbar sind. Deshalb auch der erste und letzte Buchstabe fix, damit ist der Zusammenhang von Abk. zu Name noch recht gut sichtbar.
        Um möglichst vielfältige/eindeutige Abkürzungen zu erhalten gibt es aber gewiss noch bessere Algorithmen... Hier ist auch entscheident, was dir wichtig ist.

        Viele Grüße,
        Sebastian