mod_form 4.1e vs. PHP 7.2

Diskussion zum Formular-Modul für ConPresso 4
Antworten
Benutzeravatar
Mr. Magpie
ConPresso-Profi
Beiträge: 1004
Registriert: 01.01.1970 01:00
Wohnort: Wuppertal
Hat sich bedankt: 274 Mal
Danksagung erhalten: 59 Mal

mod_form 4.1e vs. PHP 7.2

Beitrag von Mr. Magpie »

Ich habe bei mir eine Version 4.1e von mod_form im Einsatz (vgl. http://community.conpresso.de/viewtopic ... 7907#27907). Die enthält in mod_form/includes/actions.inc.php eine Funktion decode_entities():

Code: Alles auswählen

function decode_entities($text) {
  $text= html_entity_decode($text,ENT_QUOTES,"ISO-8859-15"); #once
  $text= html_entity_decode($text,ENT_QUOTES,"ISO-8859-15"); #twice
  $text= preg_replace('/&#(\d+);/me',"chr(\\1)",$text); #decimal notation
  $text= preg_replace('/&#x([a-f0-9]+);/mei',"chr(0x\\1)",$text);  #hex notation
  return $text;
}
Unter PHP 7.2 müsste man - wegen des fehlenden /e-Modifier-Supports - die beiden preg_replace()-Zeilen ersetzen: "preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead"


Außerdem verursacht die Zeile

Code: Alles auswählen

if ($activeModules[$directory]['auto_expire']=="yes")	$data['verfallsdatum']	= date('Y-m-d', time() + $activeModules[$directory]['expire_time']*86400 ) . ' 23:59:59';
unter PHP 7.2 einen Fehler: "A non-numeric value encountered"

Kannst du für die beiden Probleme bitte eine Lösung generieren?
Günther Ludwig
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 933 Mal
Kontaktdaten:

Beitrag von MarkusR »

Code: Alles auswählen

function decode_entities($text) {
     $text= html_entity_decode($text,ENT_QUOTES,"ISO-8859-15"); #once
     $text= html_entity_decode($text,ENT_QUOTES,"ISO-8859-15"); #twice
     $text= preg_replace_callback('/&#(\d+);/m',function ($m) { return chr($m[1]); },$text); #decimal notation
     $text= preg_replace_callback('/&#x([a-f0-9]+);/mi',function ($m) { return chr("0x".$m[1]); },$text);  #hex notation
     return $text;
}
Wo im zweiten Fall das Problem sein soll sehe ich nicht. Aber seit PHP 7.1 wird da wohl etwas pingelig mit Warnungen gearbeitet, also:

Code: Alles auswählen

if ($activeModules[$directory]['auto_expire']=="yes")	$data['verfallsdatum']	= date('Y-m-d', time() + (int)$activeModules[$directory]['expire_time']*86400 ) . ' 23:59:59';
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
hscha
ConPresso-Experte
Beiträge: 714
Registriert: 22.02.2006 22:00
Wohnort: Berlin
Hat sich bedankt: 216 Mal
Danksagung erhalten: 26 Mal
Kontaktdaten:

Beitrag von hscha »

Wo bekomme ich die Version 4.1e her? Bei Conpresso4 gibts immer noch 4.1c

Grüße von Horst
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 933 Mal
Kontaktdaten:

Beitrag von MarkusR »

Hallo Horst,

der Download auf conpresso4.de ist seit 2013 die 4.1d. Habe nur die "Anzeige" der Versionsnummer vergessen anzupassen...

Du kannst von mir das Archiv für die 4.1e bekommen, ich will in Kürze noch eine Datei austauschen, weil sich einige Hosting-Server mit der Codierungserkennung schwer tun.
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
hscha
ConPresso-Experte
Beiträge: 714
Registriert: 22.02.2006 22:00
Wohnort: Berlin
Hat sich bedankt: 216 Mal
Danksagung erhalten: 26 Mal
Kontaktdaten:

Beitrag von hscha »

Sehr gern!
Frohes Fest aus Berlin!
Antworten