PHP7 und preg_replace Problem


rompers

Grünschnabel
Hallo,

ich hab seit heute von meinem Anbieter PHP7 bekommen und nun hab ich das Problem das er mir immer angezeigt:
Code:
Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/www/web5/html/V3/lib/tpl_lib.php on line 35
Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/www/web5/html/V3/lib/tpl_lib.php on line 41
Der PHP Code lautet:
PHP:
            $code = preg_replace('!</then>(\s*)</if>!i', '</then><else></else>\\1</if>', $code);
            $code = preg_replace('!<if\((.*)\)>!sieU', '"\".((".$this->stripSlashes(\'\\1\').") "', $code);
            $code = preg_replace('!</if>!i', ')."', $code);
            $code = preg_replace('!<then>!i', '? ("', $code);
            $code = preg_replace('!</then>!i', '") ', $code);
            $code = preg_replace('!<else>!i', ': ("', $code);
            $code = preg_replace('!</else>!i', '")', $code);
            $code = preg_replace('!<expression>(.*)</expression>!sieU', '"\".".$this->stripSlashes(\'\\1\').".\""', $code);
Danke für jede Hilfe.

LG Rompers ;)
 

sheel

I love Asm
Hi

naja, die Fehlermeldung sagt doch eigentlich alles? Und das war auch schon seit 4 Jahren bekannt.

Alt:
Code:
$code = preg_replace('!<if\((.*)\)>!sieU', '"\".((".$this->stripSlashes(\'\\1\').") "', $code);
Neu:
Code:
$code = preg_replace_callback('!<if\((.*)\)>!siU', function($x) { return strip_slashes($m[1]); }, $code);
Also e in sieU weg und eine function als zweiten Parameter.

Das letzte preg_replace muss auch so verändert werden (wegen dem e in sieU)
 

rompers

Grünschnabel
Hallo,

vielen Dank, das mit dem Parameter is ja nun auch schon ewig her und ich musste mich jetzt ewig nicht mehr damit beschftigen.
Hatte mich gestern schon mit MySQLi geärgert gehabt.
Jetzt funktioniert wieder alles.
Danke.

LG Rompers ;)
 

Shorty1968

Erfahrenes Mitglied
Ich grab das mal aus dann muss ich eventuell kein neues Thema auf machen.

Ich habe damit auch ein Problem,der Fehler lautet:
Code:
Warning:  preg_replace(): Compilation failed: number too big in {} quantifier at offset 7 in /var/www/vhosts/have-fun-community.de/httpdocs/acp/lib/class_parse.php on line 338
/acp/lib/class_parse.php Zeile 338
Code:
if ($allowsmilies == 1) $post = preg_replace($this->smilie_search2, $this->smilie_replace2, $post);
Ich habe es mit Folgendem erfolglos versucht.
Code:
if ($allowsmilies == 1) $post = preg_replace_callback($this->smilie_search2, $this->smilie_replace2, $post);
purzelbaum unsere besten emails
 

Sempervivum

Erfahrenes Mitglied
Da müsste man wohl wissen, wie der Suchen- und Ersetzen-String aussieht. Am besten Mal mit var_dump() ausgeben lassen.