Groß/Kleinbuchstaben im String auswerten

KICK

Mitglied
Hallo,

ich möchte ermitteln, wieviele Groß- und/oder Kleinbuchstaben der String XY enthält.

Zum Beispiel:

$srting = "XaXaXaXX";

Als Ausgabe möchte ich dann ->

Der geprüfte String enthält 5 Großbuchstaben und 3 Kleinbuchstaben.

Hat jemand eine Idee wie man das checken könnte?

P.S.: Noch cooler wärs natürlich als Ausgabe folgendes zu erhalten ->

Der geprüfte String enthält 5 Großbuchstaben (X X X X X) und 3 Kleinbuchstaben (a a a).
 
Habe jetzt gerade keine Funktion gefunden, die das direkt löst, deshalb habe ich mir kurz Gedanken gemacht und dabei heraus gekommen ist folgendes Snippet.

Der String wird in ein Array zerlegt, in dem jedes Zeichen ein Element des Arrays ist. Das ist nötig, da, soweit ich mich erinnern kann, man Strings in PHP nicht mehr automatisch als Char-Array betrachten/behandeln darf.
Danach durchlaufe ich das Array und checke mittels regulären Ausdrücken, ob der vorliegende Buchstabe ein Groß- oder Kleinbuchstabe ist.
PHP:
$a_string = explode("",$s_string); // $s_string ist dein zu checkender String
foreach($a_string as $v){
  if(preg_match("/[A-Z]/",$v)){
    $i_uppercases++;
  }
  elseif(preg_match("/[a-z]/",$v)){
    $i_lowercases++;
  }
}
echo "Der geprüfte String \"".$s_string."\" enthält ".$i_uppercases." Groß- und ".$i_lowercases." Kleinbuchstaben.";
Ich hoffe, das konnte dir ein bischen helfen. Wenn du nun noch wissen willst, welche Groß- oder Kleinbuchstaben das sind, dann kannst du einfach in der jeweiligen if-Afrage das $v in ein Array schreiben. Jeweils eins für Groß- und eins für die Kleinbuchstaben. Diese Arrays kannst du nachher bei der Ausgabe wieder mit foreach oder ähnlichem durchlaufen.

FG, Tim
 
Hallo,

erstmal danke für die Antwort!

So wie du das ganze gepostet hast, hätt ich mir das auch in etwa vorgestellt, ABER explode("", $string) funktioniert leider nicht, denn man muss mindestens ein Zeichen angeben um den String zu teilen. Und genau da liegt eigentlich mein "Hauptproblem".

Beispiel: explode("x",$string); oder explode(" ",$string);

Alles andere würde zu einer Fehlermeldung "Warning: explode(): Empty delimiter usw.." führen.
 
Ok habe mich nochmal schlau gemacht. Das ansprechen der Stringbuchstaben über die Arrayelementklammern ist in PHP4 wie ich schon erwähnte nicht mehr erwünscht. Jedoch kann man über geschwungene Klammern darauf zugreifen. Dann sieht das ganze wie folgt aus.
PHP:
$string = "Die ist ein Teststring";
for($i=0;$i<strlen($string),$i++){
  if(preg_match("/[A-Z]/",$string{$i})){
    $i_uppercases++;
  }
  elseif(preg_match("/[a-z]/",$string{$i})){
    $i_lowercases++;
  }
}
echo "Der geprüfte String \"".$string."\" enthält ".$i_uppercases." Groß- und ".$i_lowercases." Kleinbuchstaben.";
Nähere Infos zu der Geschichte mit den geschweiften Klammern gibt es hier: http://de3.php.net/manual/de/language.types.string.php unter dem Punkt "Zugriff und Modifikation von Zeichen in Strings".
 
Zurück