Funktion (o.ä.) für Name <-> Initiale

  • Ich suche eine function (oder irgendetwas, das das "tut") die Nachnamen auf die Initialen abkürzt, wobei aber variabele Namen berücksichtigt werden sollten.
    Hans Müller - Hans M. (das geht mit explode und substr - aber nur für fest vorgegebene Anzahl an Namen)
    aber das?
    Hans Meier-Müller - Hans M.-M.
    Hans von Müller - Hans v. M.
    Hans von Müller Meier - Hans v. M. M.

  • Du vergisst, dass es auch noch zweite Vornamen gibt, einfach wird das also nicht. Obs so ein Script schon gibt? Schon gegooglet? Schon auf phpclasses.org gewesen?

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • Es gibt auch dritte und vierte und fünfte Vornamen. Das kann keine Klasse oder Funktion in der Form realisieren. Theoretisch könntest du Listen mit Vor- und Nachnamen anlegen und die Bestandteile abgleichen. Da dürfte aber zum einen die Erstellung der Listen schon eine Sisyphus-Arbeit sein, zum anderen gibt es auch Namen die sowohl Vor- als auch Nachname sein können, also wäre nichtmal damit alles eindeutig abgedeckt.
    Wenn es um Nutzer eines Systems geht solltest du einfach zwei Felder verwenden, Vor- und Nachname, und diese auch getrennt abspeichern, damit wäre das dann am simpelsten geklärt.
    Falls es nicht um Namen aus dem System geht könntest du höchstens einen Kompromiss eingehen indem du sagst, der erste Name wird ausgeschrieben, alle Folgenden auf den Anfangsbuchstaben gekürzt. Dafür kommst du dann auch mit explode und substr aus.

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  • klar hab ich schon gegoogelt ;)

    Diese Funktion kürzt mir variabel viele Nachnamen auf den jeweils ersten Buchstaben zurück

    PHP
    function initials($name){
        $nword = explode(" ",$name);
    
        foreach($nword as $letter){
            $new_name .= $letter{0}.'.';
        }
        return ($new_name);
    }
    echo initials($name);

    aber auch nur, wenn zwischen den Namen "nur" Leerzeichen sind.
    Hier geht es darum, wie der Nachname angezeigt wird (nicht User, sondern Besitzer eines Hundes). Sieht nämlich schon blöd aus wenn dort steht "Hans v." (für Hans von Müller). Der oder die eingegebenen Vornamen werden grundsätzlich vollständig angezeigt, nur bei dem Nachnamen soll die Wahl bleiben ob vollständig oder abgekürzt. Vor- und Nachname werden getrennt gespeichert, ebenso ein weiteres Feld mit dem zusammengesetzen Namen (Anzeigename).

    Einmal editiert, zuletzt von TanjaP. (4. März 2013 um 17:15)

  • naja du müsstest mal herausfinden, welche bindeworte es in namen gibt, die alle in ein array und wenn der wert vom explode nicht in diesem worte-array ist dann kürzt du ihn ab ;)