Wie erkenne ich die anzahl der Grossbuchstaben?
mortimer
- php
Ich habe ein Inutfield in das die Benutzer einen Nickname füllen dürfen..
Doch will ich dass sie nicht mehr als 3 Grossbuchstaben verwenden...
wie finde ich denn heraus ob in einem String/array grossbuchstaben benutzt wurden und wie viele es sind?
Z.B:
aspirant < OK
JimmiPop < OK
MrBigNoise < OK
ClaraDieDoofeKuh < FEHLER
Eine Idee?
ciao
Tachen,
ich würde es via ASCII-Tabelle und Referenznummer versuchen.
z.B.
$str = 'Hallo Welt !';
$count = 0;
for($i=0; $i<strlen($str); $i++) {
if(ord($str[$i]) >= 65 && ord($str[$i]) <=90)
$count++;
}
echo $count;
Greetz David
Hello,
musst Du wohl eine Zählfunktion bauen, die den String von vorne bis hinten durchgeht und die Zeichen auswertet..-
$text = 'Hallo Du Blöder PC, wieviel Buchataben sind drin?')
$anz_kl = 0;
$anz_gt = 0;
for($i=0 ; $i<strlen($text ; $i++)
{
if (ord(text{$i})>64 and ord(text{$i})<91)
{
$anz_gr++;
}
elseif(ord(text{$i})>98 and ord(text{$i})<123)
{
$anz_gr++;
}
elseif (ord(text{$i})==142) #Ä
### hier mal selber
elseif (ord(text{$i})==153) #Ö
### weitermachen
}
Liebe Grüße aus http://www.braunschweig.de
Tom
elseif (ord(text{$i})==142) #Ä
### hier mal selber
elseif (ord(text{$i})==153) #Ö
### weitermachen
Und Ü ?=)
ciao
hi,
Und Ü ?=)
hast du
### hier mal selber
### weitermachen
überlesen ...?
gruß,
wahsaga
hast du
### hier mal selber
### weitermachen
überlesen ...?
nein... aber ich kenne die ASCI-id für Ü nicht =/
ciao
Hello,
hast du
### hier mal selber
### weitermachen
überlesen ...?nein... aber ich kenne die ASCI-id für Ü nicht =/
echo "<pre>";
for ($ascii=0; $ascii<256; $ascii++)
{
echo "$ascii\t".chr($ascii)
}
echo "</re>";
Probier da mal...
Liebe Grüße aus http://www.braunschweig.de
Tom
Hello,
so sieht es etwas besser aus.
Ich garantiere aber nicht dafür, dass der browser alle Zeichen richtig darstellt.
<?php ### ascii.php ###
echo "<pre>";
for ($ascii=0; $ascii<256; $ascii++)
{
echo "$ascii ".chr($ascii)."\t";
if ($ascii % 5 == 0) echo "<br />\n";
}
echo "</re>";
?>
Liebe Grüße aus http://www.braunschweig.de
Tom
Huhu mortimer
nein... aber ich kenne die ASCI-id für Ü nicht =/
Aha.
Dann probier doch mal eine ASCII-Tabelle zu erzeugen.
Schau Dir dazu die Funktionen chr() und ord() an.
Mit einer for-Schleife sollte das klappen ...
Viele Grüße
lulu
oder guck halt hier nach
Hello,
nein... aber ich kenne die ASCI-id für Ü nicht =/
Aha.
Dann probier doch mal eine ASCII-Tabelle zu erzeugen.
Schau Dir dazu die Funktionen chr() und ord() an.Mit einer for-Schleife sollte das klappen ...
oder guck halt hier nach
Das ist wirklich nicht so prophan. Die Darstellung im Browser ist eben nicht Ascii, sondern wahrscheinlich Ansi-schlagmichtot-Standard...
Wie kann man denn mit einem Browser ASCII generieren?
Liebe Grüße aus http://www.braunschweig.de
Tom
Start > Programme > Zubehör > Systemprogramme > Zeichentabelle
Gunnar
Hello,
Start > Programme > Zubehör > Systemprogramme > Zeichentabelle
Gunnar
Das ist ANSI aber nicht ASCII
Liebe Grüße aus http://www.braunschweig.de
Tom
Das ist ANSI aber nicht ASCII
Tom,
Wo du Recht hast...
In ASCII gibt's natürlich kein Ü.
Gunnar
Hello,
Das ist ANSI aber nicht ASCII
Tom,
Wo du Recht hast...In ASCII gibt's natürlich kein Ü.
Gunnar
Doch, in extended ASCII ist es das Zeichen 154 und da kleine dazu hat die Nummer 129. Diese Ganze Tabelle ist Quasi mit den ersten PCs oder sogar schon mit den Terminals, die es davor gab entstanden. Das war aien Auftrag von IBM an Forma Herkules. Die haben damals Platinen für Terminals und später Grafikkarten verbrochen.
Mal sehen, ob man in Goolge was finden kann über die Geschichte.
Liebe Grüße aus http://www.braunschweig.de
Tom
Doch, in extended ASCII
Was bitte ist extended ASCII?
Zwischen 128 und 255 hat doch jeder sein eigenes Süppchen gekocht. Oder ist der DOS-Zeichensatz jemals offizieller Standard geworden?
Gunnar
Huhu mortimer
Eine Idee?
Per preg_replace() alles was nicht Grossbuchstabe ist entfernen.
Dann die Länge des verbeleibenden Strings mit strlen() holen.
Ungefähr so:
$test = 'RumBle In tHe dJunGle';
echo strlen(preg_replace ('#[^A-Z]#','', $test));
Für Umlaute muss man noch die locale-Einstellungen richtig setzen.
Viele Grüße
lulu
hi,
Doch will ich dass sie nicht mehr als 3 Grossbuchstaben verwenden...
wie finde ich denn heraus ob in einem String/array grossbuchstaben benutzt wurden und wie viele es sind?
die lösungen der anderen sind zwar auch nicht unbedingt schlecht, aber vielleicht kann man es ja auch etwas "raffinierter" angehen.
kopie des strings mit strtolower in kleinbuchstaben umwandeln, und anschliessend mit similar_text() [1] ermitteln, wie viele zeichen in den beiden strings voneinander abweichen.
da similar_text() die anzahl der übereinstimmungen zurückliefert, muss man diesen wert dann halt von der stringlänge abziehen, um die abweichungen rauszubekommen - na und wenn der wert dann > 3 ist ...
achtung: könnte u.U. probleme mit den deutschen umlauten geben; ich vermute mal, dass strtolower diese nicht korrekt umwandelt ...
gruß,
wahsaga
[1] http://de3.php.net/manual/de/function.similar-text.php