PHP5: eregi() und ereg() ersetzen

Für die wirklich Harten, die alles selber machen.
Antworten
Holger
User
User
Beiträge: 2253
Registriert: Mi 17.Mär, 2004 18:09

PHP5: eregi() und ereg() ersetzen

Beitrag von Holger » Fr 27.Jan, 2012 16:44

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
Real men don’t back up, they learn data recovery. ;-)
http://www.mysqldumper.de
http://www.mysqldumper.se

Benutzeravatar
oxpus
Administrator
Administrator
Beiträge: 29108
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Re: PHP5: eregi() und ereg() ersetzen

Beitrag von oxpus » Fr 27.Jan, 2012 18:21

Man kann auch strpos() verwenden. Das klar dann auch mit fast allen regulären Ausdrücken.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per ICQ, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per ICQ, Email or PM. Each unasked message will be ignored!

Holger
User
User
Beiträge: 2253
Registriert: Mi 17.Mär, 2004 18:09

Re: PHP5: eregi() und ereg() ersetzen

Beitrag von Holger » Fr 27.Jan, 2012 20:06

Danke! ich versuche es damit!
Real men don’t back up, they learn data recovery. ;-)
http://www.mysqldumper.de
http://www.mysqldumper.se

Benutzeravatar
volker58
User
User
Beiträge: 760
Registriert: Mo 27.Dez, 2004 19:22
Wohnort: Annaberg-Buchholz
Kontaktdaten:

Re: PHP5: eregi() und ereg() ersetzen

Beitrag von volker58 » Sa 08.Sep, 2012 11:08

hallo,

wie kann ich das ersetzen?

Code: Alles auswählen

$text = ereg_replace("\n", "<br>", $text);
Gruss Volker

http://www.fuchsienfreunde.de

Benutzeravatar
oxpus
Administrator
Administrator
Beiträge: 29108
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Re: PHP5: eregi() und ereg() ersetzen

Beitrag von oxpus » Sa 08.Sep, 2012 15:34

Die kürzeste Umbruchsformatierung in PHP ist diese:

Code: Alles auswählen

    $text = nl2br($text);
Zumal auch das valide und modernere <br /> anstelle <br>, wie man das in älteren HTML-Dialekten notiert, verwendet wird.
Alternativ ginge aber auch

Code: Alles auswählen

    $text = str_replace("\n", "<br />", $text);
Ist dabei immer noch stabiler und schneller als ereg_replace, da letzteres eher für komplexere reguläre Ausdrücke gedacht ist.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per ICQ, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per ICQ, Email or PM. Each unasked message will be ignored!

Benutzeravatar
volker58
User
User
Beiträge: 760
Registriert: Mo 27.Dez, 2004 19:22
Wohnort: Annaberg-Buchholz
Kontaktdaten:

Re: PHP5: eregi() und ereg() ersetzen

Beitrag von volker58 » Sa 08.Sep, 2012 16:26

Danke :)
Gruss Volker

http://www.fuchsienfreunde.de

Benutzeravatar
volker58
User
User
Beiträge: 760
Registriert: Mo 27.Dez, 2004 19:22
Wohnort: Annaberg-Buchholz
Kontaktdaten:

Re: PHP5: eregi() und ereg() ersetzen

Beitrag von volker58 » Sa 08.Sep, 2012 18:51

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. 
Gruss Volker

http://www.fuchsienfreunde.de

Benutzeravatar
oxpus
Administrator
Administrator
Beiträge: 29108
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Re: PHP5: eregi() und ereg() ersetzen

Beitrag von oxpus » Sa 08.Sep, 2012 19:34

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?
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per ICQ, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per ICQ, Email or PM. Each unasked message will be ignored!

Benutzeravatar
volker58
User
User
Beiträge: 760
Registriert: Mo 27.Dez, 2004 19:22
Wohnort: Annaberg-Buchholz
Kontaktdaten:

Re: PHP5: eregi() und ereg() ersetzen

Beitrag von volker58 » So 09.Sep, 2012 07:36

moing,

ich denk das eregi geht ab php 5.3. nicht mehr?
Gruss Volker

http://www.fuchsienfreunde.de

Benutzeravatar
oxpus
Administrator
Administrator
Beiträge: 29108
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Re: PHP5: eregi() und ereg() ersetzen

Beitrag von oxpus » So 09.Sep, 2012 11:03

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.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per ICQ, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per ICQ, Email or PM. Each unasked message will be ignored!

Antworten