PHP5: eregi() und ereg() ersetzen

PHP, Ajax, CSS, HTML, Javascript
Eben für die wirklich Harten, die alles selber machen.
Antworten
Holger
Beiträge: 2253
Registriert: Mi 17.Mär, 2004 18:09

PHP5: eregi() und ereg() ersetzen

Beitrag 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
Real men don’t back up, they learn data recovery. ;-)
http://www.mysqldumper.de
http://www.mysqldumper.se
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

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

Beitrag von oxpus »

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 Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Holger
Beiträge: 2253
Registriert: Mi 17.Mär, 2004 18:09

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

Beitrag von Holger »

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
Beiträge: 724
Registriert: Mo 27.Dez, 2004 19:22
Wohnort: Annaberg-Buchholz
Kontaktdaten:

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

Beitrag von volker58 »

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
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

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

Beitrag von oxpus »

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 Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
volker58
Beiträge: 724
Registriert: Mo 27.Dez, 2004 19:22
Wohnort: Annaberg-Buchholz
Kontaktdaten:

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

Beitrag von volker58 »

Danke :)
Gruss Volker

http://www.fuchsienfreunde.de
Benutzeravatar
volker58
Beiträge: 724
Registriert: Mo 27.Dez, 2004 19:22
Wohnort: Annaberg-Buchholz
Kontaktdaten:

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

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

http://www.fuchsienfreunde.de
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

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

Beitrag 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?
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
volker58
Beiträge: 724
Registriert: Mo 27.Dez, 2004 19:22
Wohnort: Annaberg-Buchholz
Kontaktdaten:

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

Beitrag von volker58 »

moing,

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

http://www.fuchsienfreunde.de
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

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

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