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?

Code: Alles auswählen

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

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

Verfasst: Sa 08.Sep, 2012 16:34
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.

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.