Umwandlung zu utf-8
mb_convert_encoding($zeichenkette, "UTF-8", mb_detect_encoding($string, "UTF-8, ISO-8859-1, ISO-8859-15", true));
Umwandlung zu iso
mb_convert_encoding($zeichenkette, "ISO-8859-1", mb_detect_encoding($string, "UTF-8, ISO-8859-1, ISO-8859-15", true));
Allgemeiner Hinweis zu UTF-Codierung:
Immer darauf achten, dass die Datenbank (Datenbank und Tabellen) UTF-Kollation hat.
- Weitere Migrationen von Ressourcen zu Klassenobjekten
- Die file_info Ressource ⇾ finfo Objekten
- IMAP-Ressourcen ⇾ Objekte der IMAP\Connection
- FTP-Verbindungsressourcen ⇾ Objekte der Klasse FTP\Connection
- Font Identifier ⇾ GdFont Klassenobjekten
- LDAP Ressourcen ⇾ Objekte
- Pspell Ressourcen ⇾ Klassenobjekte
- Die PHP-Interaktive-Shell lässt sich nur bei aktivierter readline-Erweiterung öffnen.
- Die Zeilenenden für CSV Schreibfunktionen sind anpassbar.
- Früher verhielten sich die CSV-Schreibfunktionen fputcsv und SplFileObject::fputcsv so, dass sie am Ende jeder Zeile \n bzw. das Line-Feed-Zeichen anfügten. In PHP 8.1 wurde diesen Funktionen ein neuer Parameter (eol) hinzugefügt. Damit ist es möglich ein variables Zeilenendezeichen zu übergeben. Wird der Parameter nicht spezifiziert, wird weiterhin /n am Zeilenende verwendet.
- Der MySQLi-Standard-Fehlermodus wurde auf Exceptions gesetzt.
- Der Fehlerbehandlungsmodus sollte also mit der der mysqli_report-Funktion gesetzt werden, bevor die erste MySQLi-Verbindung hergestellt wird.
- Einschränkungen für das Operator-Argument der Funktion version_compare()
Nur noch möglich:
==, =, und eq
< und lt
<= und le
> und gt
>= und ge
!=, <>, und ne
- HTML Kodierungs- und Dekodierungsfunktionen wie z.B. htmlspecialchars() und htmlentities() verwenden jetzt ENT_QUOTES | ENT_SUBSTITUTE
Das bedeutet u.a., dass einfache Anführungszeichen in Ihre HTML-Entität und ungültige Zeichen in ein Unicode-Ersatzzeichen überführt werden. - Warnung bei unzulässigen kompakten Funktionsaufrufen
Durch die Funktion compact() wird eine Warnung ausgegeben, wenn z.B. eine Variable nicht richtig definiert wurde.
Beispiel:
$var1=$_GET["behoerde"]; //Gibt eine Fehlermeldung aus, wenn die Variable $_GET["behorde"] noch gar nicht ausgerufen wurde. Mit PHP 8.0 wäre das noch durchgegangen
Neue Schreibweise:
if(!isset($_GET["behoerde"]))$tma="a"; else $tma=$_GET["behoerde"];
- Support für AVIF Image Format
- Support für Kreuzungstypen
- Support für ENUMS (Aufzählungen)
- Array Unpacking Support für String-Keyed Arrays
- Never Return Typ
- Fibers
Fibers repräsentieren vollwertige, unterbrechbare Funktionen. Fibers können von überall im Call-Stack ausgesetzt werden, wodurch die Ausführung innerhalb der Faser angehalten wird, bis die Faser zu einem späteren Zeitpunkt wieder aufgenommen wird. - Readonly Eigenschaft
- fsync() und fdatasync() Funktionen
- array_is_list() Funktion
Diese Funktion testet, ob ein Array eine Liste ist.
array_is_list([1, 2, 3]); // true
- $_FILES: full_path Schlüssel für Verzeichnis Uploads
Damit können relative Pfade gespeichert oder die genaue Verzeichnisstruktur auf dem Server dupliziert werden. - Datei-Uploads von Strings mit CURLStringFile
- Performanceverbesserungen mit Inheritance Cache
- First-Class Callable-Syntax
- Explizite oktale Zahlendarstellung
- DNS-over-HTTPS (DoH) Support
DoH ist ein Protokoll zur DNS-Auflösung über das HTTPS-Protokoll. Die Verschlüsselung der Daten zwischen Client und DNS-Resolver verhindert MitM-Angriffe und erhöht so die die Privatsphäre und Sicherheit der Benutzer. - Neue MYSQLI_REFRESH_REPLICA Konstante
- Keine Übergabe von Nullwerten an nicht-nullbare Funktionen
In diesem Fall wird folgende Fehlermeldung ausgegeben:
Deprecated: Passing null to argument of type string is deprecated
- Eingeschränkte $GLOBALS-Verwendung
Die Nur-Lese-Verwendung von $GLOBALS funktioniert nach wie vor. Das Schreiben in $GLOBALS als Ganzes ist hingegen nicht mehr möglich. - Rückgabetyp-Deklarationen
In PHP 8.0 konnten Entwickler*innen Parameter und Rückgabetypen für die meisten internen Funktionen und Methoden deklarieren. in PHP 8.1 werden nicht-finale interne Methoden-Rückgabetypen vorläufig deklariert, in PHP 9.0 voraussichtlich erzwungen. Also wird es in den PHP 8.1 aufsteigenden Versionen eine „deprecated“-Meldung geben, ab PHP 9.0 einen „fatalen Fehler“.
- die Ini-Einstellungen filter.default und filter.default_options
- Serializable interface
Wenn in PHP 8.1 das Serializable Interface implementiert werden soll, ohne __serialize() und __unserialize() zu implementieren, wird PHP folgende Warnung ausgeben:
Deprecated: The Serializable interface is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in ... on line ...
- mhash*()-Funktionen
- Nicht kompatible float to int Conversions
Wenn eine Float-Zahl in eine Integer-Zahl umgewandelt wird, ist dies oft mit Datenverlust verbunden. Gleiches geschieht, wenn der Float außerhalb des zur Verfügung stehenden Integer-Bereichs liegt oder wenn ein Float-String in einen Integer konvertiert wird. PHP 8.1 liefert in diesem Fall einen Deprecation-Error. - mysqli::get_client_info und mysqli_get_client_info($param)
- mysqli_driver->driver_version Property
- Automatische Erstellung von Arrays aus falschen Werten (autovivication) für z.B. undefinierte Variablen
- utf8_encode(),utf8_decode()