Deprecated: Function ereg() is deprecated

Aus VMS1 Tutorial

Wechseln zu: Navigation, Suche

Die Meldung "deprecated" ("überholt") ist grundsätzlich nicht schlimm, da die Funktion noch vorhanden ist, nur in kommenden Versionen nicht mehr verwendet werden kann.

Damit richtet sich diese Meldung vorallem an Programmierer, die solche Funktionen nicht mehr verwenden sollten.

Im Fall der Funktionen

ereg(), ereg_replace(), eregi_replace(), eregi(), split(), spliti()

bedeutet es, dass PHP seit Version 5.3.0 die POSIX Erweiterung für reguläre Ausdrücke nicht mehr unterstützt. Als Ersatz dafür gibt es die PCRE Erweiterung, die auch schon in früheren Versionen vorhanden ist.

POSIX PCRE
ereg_replace() preg_replace()
ereg() preg_match()
eregi_replace() preg_replace()
eregi() preg_match()
split() preg_split()
spliti() preg_split()

Es reicht allerdings nicht aus, nur den Funktionsnamen auszutauschen, obwohl die Funktionen die gleiche Signatur haben.

Beispiel

echo ereg_replace("x", "a", "xyz"); // Ausgabe: ayz
// Deprecated: Function ereg_replace() is deprecated in /path/to/file.php on line X

Ein einfaches Austauschen der Funktionsnamen nach der obigen Tabelle würde folgende Warnung produzieren:

echo preg_replace("x", "a", "xyz");
// Warning: preg_replace() [function.preg-replace]: Delimiter must not be alphanumeric or backslash on line X

In den PCRE (preg_....) Funktionen muss der reguläre Ausdruck, also das 1. Argument, von Begrenzerzeichen umgeben sein. Als Begrenzer sollte / , # oder ~ gewählt werden (theoretisch sind weitere möglich, diese 3 werden am häufigsten verwendet).

Eine korrekte Ersetzung wäre also:

echo preg_replace("/x/", "a", "xyz"); // Ausgabe: ayz
Persönliche Werkzeuge