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.

Note

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.

||
|1. Zeile|
|2. Zeile|
|3. Zeile|
|    |

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.

ZeichenASCIIBeschreibung
NULL0
SOH1Dokumentenkopf
STX2Textanfang
ETX3Textende
EOT4
ENQ5
ACK6Bestätigung
BEL7Klingel
BS8Backspace
TAB9
LF10Line Feed
VT11
FF12
CR13Wagenrücklauf
SO14
SI15
DLE16
DC117
DC218
DC319
DC320
NAK21
SYN22
ETB23
CAN24
EM25
SUB26
ESC27Escape
FS28
GS29Gruppentrenner
RS30
US31Einheitstrenner
SP32Leerzeichen
DEL127
CSI155Control Sequenz Introducer