Heim > Artikel > Backend-Entwicklung > Woraus besteht ein PHP-String?
php-String besteht aus einer Reihe von Zeichen, wobei jedes Zeichen einem Byte entspricht, was bedeutet, dass PHP nur 256 Zeichensätze unterstützen kann, sodass die Implementierung von Strings in PHP nicht unterstützt wird eine ganze Zahl, die die Pufferlänge angibt.
Die Betriebsumgebung dieses Tutorials: Windows 10-System, PHP-Version 8.1, DELL G3-Computer
Woraus besteht ein PHP-String?
Eine Zeichenfolge besteht aus einer Reihe von Zeichen, wobei jedes Zeichen einem Byte entspricht. Das bedeutet, dass PHP nur einen Zeichensatz von 256 unterstützen kann und daher Unicode nicht unterstützt.
Detaillierte Erklärung des String-Typs
Die Implementierung von String in PHP ist ein Array von Bytes plus einer Ganzzahl, die die Pufferlänge angibt. Es gibt keine Informationen darüber, wie Bytes in Zeichen umgewandelt werden, die Entscheidung liegt beim Programmierer. Es gibt keine Einschränkungen hinsichtlich der Werte, aus denen eine Zeichenfolge besteht. Insbesondere können sich Bytes mit dem Wert 0 („NUL-Bytes“) an einer beliebigen Stelle in der Zeichenfolge befinden (obwohl es mehrere Funktionen gibt, die in diesem Handbuch als nicht-binär bezeichnet werden). „Sicher“, ignoriert möglicherweise alle Daten nach NUL-Bytes.
Diese Funktion des String-Typs erklärt, warum es in PHP keinen separaten „Byte“-Typ gibt – stattdessen wurden Strings verwendet. Funktionen, die Nicht-Text-Werte zurückgeben – wie zum Beispiel beliebige, von einem Netzwerk-Socket gelesene Daten – geben weiterhin Zeichenfolgen zurück.
Da PHP die Codierung der Zeichenfolge nicht angibt, wie wird die Zeichenfolge codiert? Ist beispielsweise die Zeichenfolge „á“ gleich „xE1“ (ISO-8859-1), „xC3xA1“ (UTF-8, C-Form), „x61xCCx81“ (UTF-8, D-Form) oder einem anderen möglichen Ausdruck? ? Die Antwort ist, dass die Zeichenfolge in derselben Codierung wie die Skriptdatei codiert wird. Wenn also ein Skript als ISO-8859-1 kodiert ist, werden die darin enthaltenen Zeichenfolgen auch als ISO-8859-1 kodiert und so weiter. Dies gilt jedoch nicht, wenn Zend Multibyte aktiviert ist. In diesem Fall kann das Skript auf beliebige Weise codiert werden (entweder explizit angegeben oder automatisch erkannt) und dann in eine interne Codierung konvertiert werden, und die Zeichenfolge wird auf diese Weise codiert. Beachten Sie, dass es einige Einschränkungen hinsichtlich der Kodierung des Skripts (oder seiner internen Kodierung, wenn Zend Multibyte aktiviert ist) gibt – das bedeutet, dass diese Kodierung eine kompatible Obermenge von ASCII sein sollte, wie zum Beispiel UTF-8 oder ISO-8859-1. Beachten Sie jedoch, dass zustandsabhängige Codierungen, bei denen der gleiche Bytewert sowohl für Anfangs- als auch für Nicht-Anfangszeichen verwendet werden kann, beim Wechseln des Zustands Probleme verursachen können.
Um nützlich zu sein, müssen Funktionen, die mit Text arbeiten, natürlich Annahmen darüber treffen, wie die Zeichenfolge codiert ist. Leider gibt es hierfür viele Variationen von PHP-Funktionen:
Einige Funktionen gehen davon aus, dass der String in einzelnen Bytes kodiert ist, erfordern aber nicht, dass die Bytes als bestimmte Zeichen interpretiert werden. Zum Beispiel substr(), strpos(), strlen() und strcmp(). Eine andere Möglichkeit, über diese Funktionen nachzudenken, besteht darin, dass sie mit Speicherpuffern arbeiten, d. h. im Hinblick auf Bytes und Byte-Indizes.
Einige Funktionen übergeben die Codierungsmethode der Zeichenfolge und gehen möglicherweise auch davon aus, dass diese Informationen standardmäßig nicht verfügbar sind. Beispiele hierfür sind htmlentities() und die meisten Funktionen in der mbstring-Erweiterung.
Andere Funktionen verwenden das aktuelle Gebietsschema (siehe setlocale()), arbeiten aber Byte für Byte.
Abschließend gehen einige Funktionen davon aus, dass die Zeichenfolge eine bestimmte Codierung aufweist, normalerweise UTF-8. Dies gilt für die meisten Funktionen in der intl-Erweiterung und der PCRE-Erweiterung (im obigen Beispiel nur, wenn der u-Modifikator verwendet wird).
Schließlich hängt das Schreiben von Programmen, die Unicode korrekt verwenden, davon ab, sorgfältig darauf zu achten, Funktionen zu vermeiden, die Daten beschädigen könnten. Um Funktionen aus den Erweiterungen intl und mbstring zu verwenden. Aber die Verwendung von Funktionen, die Unicode-Codierungen verarbeiten können, ist nur der Anfang. Unabhängig von den Funktionen, die eine Sprache bietet, ist es am grundlegendsten, die Unicode-Spezifikation zu verstehen. Ein Programm, das beispielsweise nur Groß- und Kleinschreibung annimmt, wäre völlig falsch.
Empfohlenes Lernen: „PHP-Video-Tutorial“
Das obige ist der detaillierte Inhalt vonWoraus besteht ein PHP-String?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!