Hi,
function islower($c){
return((ord($c)-97)<26&&(ord($c)-97)>=0)?1:0;
}Hier würde ich ein preg_match("/[1]$/", $d) bevorzugen, aber vermutlich ist deine Methode schneller, da dafür die die RegEx Engine angeworfen werden muss.
Ich bin ja auch der Feind von Microoptimierung, aber eine Vermeidung der RegEx-Maschine ist durchaus recht effektiv ;-)
Zudem ist das altbewährter C-Code -- mehr oder weniger die Macros aus ctype.h nach PHP übersetzt, was außer den paar ord() praktisch nur C&P war.
Ah, da fällt mir gerade noch was ein: Vielleicht könnte man mit if($d == strtoupper($d)) was machen...
Das wäre dann Microoptimierung. Evt sogar langsamer falls bei strtoupper() kein Macro auf eine Hashtabelle zugreift.
function isdigit($d){
return ((ord($d)-48)<10&&(ord($d)-48)>=0)?1:0;
}Dazu stellt PHP schon die Funktion is_numeric() bereit.
Die ist aber relativ neu, oder? Da keine PHP-Version angegeben wurden, sah ich mich gezwungen alles so abwärtskompatibel, wie möglich zu halten. Außerdem prüft diese Funktion nicht, ob es sich bei einem Zeichen um eine Ziffer handelt, sondern ganz allgemein um eine Zahl. Das ist deutlich mehr, als benötigt wird.
Was mich aber ernsthaft wundert: trotz der Simplizität der Funktionen gibt es die Typen aus ctype.h bei PHP nicht. Oder war ich nur zu blöd, sie zu finden?
so short
Christoph Zurnieden
a-z ↩︎