Deprecated: Function ereg() is deprecated

Aus VMS1 Tutorial

Dies ist eine alte Version. Zeitpunkt der Bearbeitung: 22:24, 25. Apr. 2013 durch Jpwfour (Diskussion | Beiträge).
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
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