Stefan: Namensfeld formatieren

Hallo,

Ich möchte ein Namensfeld, das mit "$name = $_POST["name"]" übergeben wurde, so formatieren, dass alle Anfangsbuchstaben gross, der Rest aber klein geschrieben wird.

Mein Ansatz sieht folgendermassen aus:

$name = preg_replace("/ +/", '', $name);
$einzelname = explode (" ", $name);

for ($i = 0; $i < count ($einzelname); $i++)
{
  $anfangsbuchstabe = $einzelname$i;
  $anfangsbuchstabe = strtoupper($anfangsbuchstabe);
  $rest = substr ($einzalname[$i], 1, strlen($einzelname[$i]);
  $rest = strtolower($rest);
  $einzelname[$i] = $anfangsbuchstabe.$rest;
}

for ($i = 0; $i < count ($einzelname); $i++)
{
  if (in_array("-", $einzelname[$i])
  {
    $einzelname = explode ("-", $name);

for ($i = 0; $i < count ($einzelname); $i++)
    {
      $anfangsbuchstabe = $einzelname$i;
      $anfangsbuchstabe = strtoupper($anfangsbuchstabe);
      $rest = substr ($einzalname[$i], 1, strlen($einzelname[$i]);
      $rest = strtolower($rest);
      $einzelname[$i] = $anfangsbuchstabe.$rest;
    }
  }
}

$name = "";
for ($i = 0; $i < count ($einzelname); $i++)
  $name = $name.$einzelname[$i];

Bezüglich der Methode, den Anfangsbuchstaben eines Array-Elementes mit "$einzelname$i" herauszufinden, bin ich sehr skeptisch.

Kann der Code so funktionieren ?
Gibt es noch eine andere, einfachere oder/und kürzere Variante ?

Man möge mir meine Fehler oder die umständliche Programmierung verzeihen, ich bin noch ein "PHP-Greenhorn", das aber schon jetzt von den Möglichkeiten, die PHP einem bietet, restlos überzeugt ist :-)

Vielen Dank.

Stefan

  1. Hallo Stefan,

    Gibt es noch eine andere, einfachere oder/und kürzere Variante ?

    Ich würde ucwords() vorschlagen -> http://de2.php.net/manual/de/function.ucwords.php

    Ist doch irgendwie kürzer, oder? :-D

    Grüsse AndreD

    1. Hallo AndreD,

      Ist in der Tat eine gewisse Erleichterung, zumindest was die Umwandlung der Anfangsbuchstaben anbelangt.

      Danke für den Tip :-)

      Gefällt Dir meine neue Variante besser ?

      $einzelname = explode (" ", $name);

      for ($i = 0; $i < count ($einzelname); $i++)
      {
        $einzelnamen[i] = ucwords ($einzelnamen[$i]);
        $rest = substr ($einzelname[$i], 1, strlen($einzelname[$i]);
        $rest = strtolower($rest);
        $einzelname[$i] = $einzelname$i.$rest;
      }

      $einzelname = explode ("-", $einzelnamen);

      for ($i = 0; $i < count ($einzelname); $i++)
      {
        $einzelnamen[i] = ucwords ($einzelnamen[$i]);
        $rest = substr ($einzelname[$i], 1, strlen($einzelname[$i]);
        $rest = strtolower($rest);
        $einzelname[$i] = $einzelname$i.$rest;
      }

      for ($i = 0; $i < count ($einzelname); $i++)
        $einzelnamen[i] = ucwords ($einzelnamen[$i]);

      Gruss Stefan

  2. Hi,

    Ich möchte ein Namensfeld, das mit "$name = $_POST["name"]" übergeben wurde, so formatieren, dass alle Anfangsbuchstaben gross, der Rest aber klein geschrieben wird.

    Warum?

    Beispiele, bei denen das nicht sinnvoll ist:

    Ich sage nur "Johann Wolfgang Von Goethe". Das "von" wird aber üblicherweise NICHT großgeschrieben.

    Oder "Dr. Rer. Nat. Erika Mustermann" wird üblicherweise als "Dr. rer. nat. Erika Mustermann" geschrieben.

    cu,
    Andreas

    --
    MudGuard? Siehe http://www.Mud-Guard.de/
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
  3. Hallo,

    Du kannst mal schauen unter http://aktuell.de.selfhtml.org/tippstricks/javascript/formkontrolle/index.htm, da hab ich die gleiche Geschichte in Javascript gemacht. Obwohl der dort beschriebene Weg ziemlich viele Namenstypen richtig schrieben kann, gelten nach wie vor MudGuards Bedenken.

    Dieter