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()