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.

  • A ergibt true
  • a ergibt false
  • ? ergibt false, da es kein Großbuchstabe ist

Die Methode \Alvine\Types\Character::isLowerCase() prüft ob ein Zeichen ein Kleinbuchstabe ist.

  • A ergibt false
  • a ergibt true
  • ? ergibt false, 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