Zeichenketten¶
StringType¶
Die Zeichenketten-Klasse \Alvine\Types\StringType bringt die benötigte Unterstüzung
für UTF-8 mit und stellt nützliche Methoden zur Bearbeitung von UTF-8 Zeichenketten
zur Verfügung.
Hinweis
Die Klasse hieß in einer früheren Version \Alvine\Types\String. Mit der Einführung
des Schlüsselwortes string in PHP wurde die Klasse umbenannt.
Die Klasse ist auf die Verwendung der Multi-Byte Erweiterung mb_string zugeschnitten.
$string = new \Alvine\Core\StringType();
$string->string='Ich esse gerne Äpfel'; // Inhalt setzen
echo $string; // Gibt folgendes aus: Ich esse gerne Äpfel
Wie in dem obigen Beispiel zu sehen, kann der Zugriff auf den gespeicherten Wert
auch über die Eigenschaft string erfolgen.
Da für ein UTF-8 Zeichen eine unterschiedliche Anzahl von Bytes benutzt wird, ist die Länge einer Zeichenkette ungleich der Anzahl der Bytes die eine Zeichenkette belegt.
Mit der Methode \Alvine\Types\StringType::bytes() kann die Anzahl der Bytes ermittelt werden und mit
der Methode \Alvine\Types\StringType::length() wird die Anzahl der Zeichen ermittelt.
Die Zeichenkette Iñtërnâtiônàlizætiøn hat 20 Zeichen, belegt allerdings 27 Bytes im Speicher.
$string=new \Alvine\Types\StringType('Iñtërnâtiônàlizætiøn');
echo $string->length();
// → 20
echo $string->bytes();
// → 27
Über die Methode \Alvine\Types\StringType::setEncoding() kann das Ausgabeformat für die Zeichenkette
gesetzt werden.
$string=new \Alvine\Types\StringType('Iñtërnâtiônàlizætiøn');
echo (string) $string;
// → Iñtërnâtiônàlizætiøn
$string->setEncoding(\Alvine\I18n\Encoding::HTML_ENTITIES);
echo (string) $string;
// → Iñtërnâtiônàlizætiøn
Die Methode \Alvine\Types\StringType::toLowerCase() bzw. \Alvine\Types\StringType::toUpperCase()
wandeln die Groß- und Kleinschreibung um.
Mit der Methode \Alvine\Types\StringType::trim() können Leerzeichen am Anfang und Ende der Zeichenkette
entfernt werden. Wird ein Zeichen übergeben \Alvine\Types\StringType::trim('a'), so wird dieses, anstatt
von Leerzeichen entfernt. Mit der Methode \Alvine\Types\StringType::isEmpty() wird geprüft ob eine Zeichekette
leer ist.
Mit Hilfe der Methode \Alvine\Types\StringType::getLines() kann ein mehrzeilige Zeichenkette
in einzelne Zeilen getrennt werden. Der Rückgabewert dieser Methode ist ein Objekt vom Typ \Alvine\Types\StringList
$string=new \Alvine\Types\StringType('
1. Zeile
2. Zeile
3. Zeile
');
$lines=$string->getLines();
foreach($lines AS $line) {
echo '|'.$line."|\n";
}
Das Ergbnis ist in diesem Fall folgende Ausgabe.
e86a74ef-0d82-4366-d142-783277b9f2c8
Die erste Zeile der Ausgabe zeigt, dass die Eingabe mit einem Zeilenumbruch beginnt.
Soll statt ein Zeilenumbruch ein anderes Trennzeichen Anwendung finden, so kann die
Methode \Alvine\Types\StringType::explode($delimiter) verwendet werden.
Die Hilfsfunktion \Alvine\Types\StringType::getHtmlEntities() kann
die Zeichenkette in HTML Entities codiert werden. Der Rückgabewert ist die umgewandelte Zeichenkette.
Mit der Methode \Alvine\Types\StringType::append($string) lässt sich eine Zeichenkette
anhängen. Der Parameter $string kann entweder eine PHP-Zeichenkette oder ein Objekt vom Typ
\Alvine\Types\StringType sein.
Durch \Alvine\Types\StringType::indexOf($string, $offset) lässt sich das erste Auftreten des Zeichen
oder der Zeichenkette string ermitteln. Das Ergebnis ist identisch zu mb_strpos. Für die Suche des
letzten Auftretens kann die Methode \Alvine\Types\StringType::lastIndexOf($string, $offset) zum Einsatz kommen.
\Alvine\Types\StringType::getSubstring($start, $length) liefert eine Teilzeichenkette zurück.
Mit Hilfe von \Alvine\Types\StringType::replace($pattern, $replacement) kann eine Teilzeichenkette
ersetzt werden.
\Alvine\Types\StringType::contains($string) und \Alvine\Types\StringType::match($pattern) suchen nach dem
Parameter und geben true bzw. false zurück. Match verwendet für den Vergleich mb_ereg und contains
verwendet indexOf.
Um Zeichenketten vergleichen zu können, steht die Methode \Alvine\Types\StringType::compareTo($string) zur
Verfügung.
Die statische Methode \Alvine\Types\StringType::encode($string, $encoding) erlaubt die Konvertierung einer Zeichenkette
in ein anderes Format.
StringList¶
Die Klasse \Alvine\Types\StringList stellt eine Sammlung von Zeichenketten des Type \Alvine\Types\StringType
bereit. Die Klasse implementiert die Standard-Interfaces \Iterator, \ArrayAccess und \Countable.
Character¶
Die Klasse \Alvine\Types\Character stellt Methoden und Konstanten zur Behandlung von Zeichen
zur Verfügung.
Die Methode \Alvine\Types\Character::isUpperCase() prüft ob ein Zeichen ein Großbuchstabe ist.
Aergibttrueaergibtfalse?ergibtfalse, da es kein Großbuchstabe ist
Die Methode \Alvine\Types\Character::isLowerCase() prüft ob ein Zeichen ein Kleinbuchstabe ist.
Aergibtfalseaergibttrue?ergibtfalse, da es kein Kleinbuchstabe ist
Die Methode \Alvine\Types\Character::isWhitespace() prüft ob ein Zeichen ein Leerzeichen ist.
Die Methode \Alvine\Types\Character::fromChar() gibt den Code eines UTF-8 Zeichens zurück.
Die Methode \Alvine\Types\Character::fromInteger() ist das Gegenstück und wandelt einen Code in das
entsprechende UTF-8 Zeichens um.
Die Methode \Alvine\Types\Character::toLower() bzw. \Alvine\Types\Character::toIpper() wandelt ein Zeichen
in die entsprechende Schreibweise.
Die Methode \Alvine\Types\Character::getLineFeeds() gibt eine Array mit allen in UTF-8
definierten Zeilenumbrüchen zurück.
ASCII¶
Die Klasse \Alvine\Types\ASCII stellt für bestimme ASCII Sonderzeichen Konstante zur Verfügung.
Für das LineFeed-Zeichen steht zum Beispiel die Konstante \Alvine\Types\ASCII::LF zur Verfügung.
Der Wert der Konstante ist in diesem Fall 10.
| Zeichen | ASCII | Beschreibung |
|---|---|---|
| NULL | 0 | |
| SOH | 1 | Dokumentenkopf |
| STX | 2 | Textanfang |
| ETX | 3 | Textende |
| EOT | 4 | |
| ENQ | 5 | |
| ACK | 6 | Bestätigung |
| BEL | 7 | Klingel |
| BS | 8 | Backspace |
| TAB | 9 | |
| LF | 10 | Line Feed |
| VT | 11 | |
| FF | 12 | |
| CR | 13 | Wagenrücklauf |
| SO | 14 | |
| SI | 15 | |
| DLE | 16 | |
| DC1 | 17 | |
| DC2 | 18 | |
| DC3 | 19 | |
| DC3 | 20 | |
| NAK | 21 | |
| SYN | 22 | |
| ETB | 23 | |
| CAN | 24 | |
| EM | 25 | |
| SUB | 26 | |
| ESC | 27 | Escape |
| FS | 28 | |
| GS | 29 | Gruppentrenner |
| RS | 30 | |
| US | 31 | Einheitstrenner |
| SP | 32 | Leerzeichen |
| DEL | 127 | |
| CSI | 155 | Control Sequenz Introducer |