Namensfeld formatieren
Stefan
- php
0 AndreD0 Stefan
0 MudGuard0 Dieter Raber
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
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
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
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
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