Seite 1 von 1
PHP5: eregi() und ereg() ersetzen
Verfasst: Fr 27.Jan, 2012 16:44
von Holger
Hi,
seit Update auf PHP5.3.3 bekomme ich bei manchen Skripten Deprecated-Fehlermeldungen.
1)
Ich habe bei php.net ein bisschen gesucht und habe herausgefunden, dass eregi() manchmal mit stristr() ersetzt werden kann.
Das klappt auch gut, bis auf bei einigen Stellen.
z.B. hier:
Code: Alles auswählen
if(!eregi("[.]", $folder)){
include($path."/".$folder."/config.inc.php");
if($lang_folder==$folder){
$box_content->assign("LANG_SELECTED","selected='selected'");
} else {
$box_content->assign("LANG_SELECTED","");
}
$box_content->assign("LANG_NAME",$langName);
$box_content->assign("LANG_VAL",$folder);
$box_content->assign("VAL_CURRENT_PAGE",$returnPage);
$box_content->parse("language.option");
}
hier kann ich eregi nicht mit stristr ersetzen.
Kann mir jemand sagen, was ich da machen muss?
2)
Und generell ereg(), womit kann ich das ersetzen?
Gruss
Holger
Re: PHP5: eregi() und ereg() ersetzen
Verfasst: Fr 27.Jan, 2012 18:21
von oxpus
Man kann auch strpos() verwenden. Das klar dann auch mit fast allen regulären Ausdrücken.
Re: PHP5: eregi() und ereg() ersetzen
Verfasst: Fr 27.Jan, 2012 20:06
von Holger
Danke! ich versuche es damit!
Re: PHP5: eregi() und ereg() ersetzen
Verfasst: Sa 08.Sep, 2012 12:08
von volker58
hallo,
wie kann ich das ersetzen?
Re: PHP5: eregi() und ereg() ersetzen
Verfasst: Sa 08.Sep, 2012 16:34
von oxpus
Die kürzeste Umbruchsformatierung in PHP ist diese:
Zumal auch das valide und modernere <br /> anstelle <br>, wie man das in älteren HTML-Dialekten notiert, verwendet wird.
Alternativ ginge aber auch
Ist dabei immer noch stabiler und schneller als ereg_replace, da letzteres eher für komplexere reguläre Ausdrücke gedacht ist.
Re: PHP5: eregi() und ereg() ersetzen
Verfasst: Sa 08.Sep, 2012 17:26
von volker58
Danke
Re: PHP5: eregi() und ereg() ersetzen
Verfasst: Sa 08.Sep, 2012 19:51
von volker58
ich habe da noch was, die kontrolle der email geht nicht mehr
Code: Alles auswählen
if(!empty ($email)) {
if(!strpos("^[a-z0-9\._-]+@+[a-z0-9\._-]+\.+[a-z]{2,4}$", $email)) {
$error .= "<p class=\"fehler\">Fehler:<div>$email</b> ist keine gültige Emailadresse. <br>Geben Sie bitte eine gültige Emailadresse ein oder lassen Sie das Feld leer.
erst hat es so ausgesehen
Code: Alles auswählen
if(!empty ($email)) {
if(!eregi("^[a-z0-9\._-]+@+[a-z0-9\._-]+\.+[a-z]{2,4}$", $email)) {
$error .= "<p class=\"fehler\">Fehler:<div>$email</b> ist keine gültige Emailadresse. <br>Geben Sie bitte eine gültige Emailadresse ein oder lassen Sie das Feld leer.
Re: PHP5: eregi() und ereg() ersetzen
Verfasst: Sa 08.Sep, 2012 20:34
von oxpus
strpos() ist hierfür nicht geeignet, da es keine regulären Ausdrücke verarbeiten kann.
Wenn dann sollte es schon eregi sein oder man schreibt das so:
Code: Alles auswählen
if(!empty ($email)) {
preg_match("^[a-z0-9\._-]+@+[a-z0-9\._-]+\.+[a-z]{2,4}$", $email, $total_match);
if(!$total_match || $total_match === false) {
$error .= "<p class=\"fehler\">Fehler:<div>$email</b> ist keine gültige Emailadresse. <br>Geben Sie bitte eine gültige Emailadresse ein oder lassen Sie das Feld leer.
Übrigens hier ein besserer und sicherer regulärer Ausdruck für E-Mails (aus dem phpBB 3):
Code: Alles auswählen
([\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+\.)*(?:[\w\!\#$\%\'\*\+\-\/\=\?\^\`{\|\}\~]|&)+@((((([a-z0-9]{1}[a-z0-9\-]{0,62}[a-z0-9]{1})|[a-z])\.)+[a-z]{2,63})|(\d{1,3}\.){3}\d{1,3}(\:\d{1,5})?)
Bedeutet für dich:
Code: Alles auswählen
if(!empty ($email)) {
preg_match("([\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+\.)*(?:[\w\!\#$\%\'\*\+\-\/\=\?\^\`{\|\}\~]|&)+@((((([a-z0-9]{1}[a-z0-9\-]{0,62}[a-z0-9]{1})|[a-z])\.)+[a-z]{2,63})|(\d{1,3}\.){3}\d{1,3}(\:\d{1,5})?)", $email, $total_match);
if(!$total_match || $total_match === false) {
$error .= "<p class=\"fehler\">Fehler:<div>$email</b> ist keine gültige Emailadresse. <br>Geben Sie bitte eine gültige Emailadresse ein oder lassen Sie das Feld leer.
Warum willst du eigentlich eregi ersetzen?
Re: PHP5: eregi() und ereg() ersetzen
Verfasst: So 09.Sep, 2012 08:36
von volker58
moing,
ich denk das eregi geht ab php 5.3. nicht mehr?
Re: PHP5: eregi() und ereg() ersetzen
Verfasst: So 09.Sep, 2012 12:03
von oxpus
Nein, die geht schon noch, aber gilt als veraltet, was sie ja auch ist.
Wie gesagt sollte preg_match schon besser und genau so gut funktionieren.