Problem mit explode() und phpBB Debug

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Benutzeravatar
Pionier
Mitglied
Beiträge: 232
Registriert: 29.12.2007 19:55
Wohnort: Niebüll (S-H)
Kontaktdaten:

Problem mit explode() und phpBB Debug

Beitrag von Pionier »

Hallo,

ich bastel gerade an einem kleinen Mod für das phpBB3.0.4
Im großen und ganzen sind auch alle Funktionen ok, abgesehen von einer Kleinigkeit.

Im Debug-Mode bekomme ich folgende Fehlermeldung:

Code: Alles auswählen

[phpBB Debug] PHP Notice: in file /savekb.php on line 37: Undefined index: 1
[phpBB Debug] PHP Notice: in file /savekb.php on line 38: Undefined index: 2
[phpBB Debug] PHP Notice: in file /savekb.php on line 39: Undefined index: 3
Hier mal die betreffende Codestelle in meinem Mod:

Code: Alles auswählen

    $contents = file_get_contents("http://www.savekb.de/forenplugin/kb.php?uni=$savekb_uni&limit=$savekb_limit");

$lines = explode('<br>', $contents);

foreach($lines AS $line)
    {
        $datas = explode(';', $line); 

            $template->assign_block_vars('block_savekb', array(
                'ANGREIFER'       => $datas['0'], 
                'VERTEIDIGER'     => $datas['1'],
                'UNITS'           => $datas['2'],
                'LINK'            => $datas['3'] 
            ));
    }

 
Habe ich da einen gravierenden Fehler gemacht, oder was ist da falsch gelaufen?
MFG Pionier
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 17473
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Re: Problem mit explode() und phpBB Debug

Beitrag von Dr.Death »

Naja, da wird wohl ein Array Inhalt leer oder nicht definiert sein ( $datas['1'] bis $datas['3'] ).

Versuche vorher den Array Inhalt auf vorhanden sein zu prüfen:

Code: Alles auswählen

                'ANGREIFER'       => (isset($datas['0']) ? $datas['0'] : '',
                'VERTEIDIGER'     => (isset($datas['1']) ? $datas['1'] : '',
                'UNITS'           => (isset($datas['2']) ? $datas['2'] : '',
                'LINK'            => (isset($datas['3']) ? $datas['3'] : '', 
Benutzeravatar
Pionier
Mitglied
Beiträge: 232
Registriert: 29.12.2007 19:55
Wohnort: Niebüll (S-H)
Kontaktdaten:

Re: Problem mit explode() und phpBB Debug

Beitrag von Pionier »

Vermutlich,

denn mit

Code: Alles auswählen

$savekb_uni = '05'; // gib hier die zweistellige nummer des gewünschten unis ein
$savekb_limit = '5'; // wieviele kbs sollen angezeigt werden - höchstens 10

$contents = file_get_contents("http://www.savekb.de/forenplugin/kb.php?uni=$savekb_uni&limit=$savekb_limit"); 
bekomme ich folgende Daten:

Code: Alles auswählen

Cyrano; Der 7 Zwerg; A:5.390.000 V:78.210.000; http://www.savekb.de/viewkb.php?kbid=3212682
Suche deut; Lillekopf; A:12.870.000 V:123.259.000; http://www.savekb.de/viewkb.php?kbid=3212300
m0d; belldandy; A:176.040.000 V:977.469.000; http://www.savekb.de/viewkb.php?kbid=3211522
Silent Hunter ; MrBrown ; A:2.310.000 V:101.277.000; http://www.savekb.de/viewkb.php?kbid=3207852
Amun Re ; Spencer ; A:99.340.000 V:1.136.339.000; http://www.savekb.de/viewkb.php?kbid=3205770
was ja auch richtig ist.

Aber in der Ausgabe werden mir 6 Zeilen erstellt.
siehe auch das Demo => http.allytools.de/phpBB3/
MFG Pionier
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Re: Problem mit explode() und phpBB Debug

Beitrag von Pyramide »

Wenn du den Quellcode der Datei http://www.savekb.de/forenplugin/kb.php?uni=05&limit=5 anguckst, dann siehst du dass die "letzte" Zeile noch mit einem <br> aufhört, also die eigentlich letzte Zeile aus einem Leerstring besteht.

Am besten du prüfst z.B. mit count($datas) == 4 ob du die Daten im richtigen Format bekommst. Damit deckst du dann auch gleich den Fall ab, falls der Server mal Müll liefert anstatt der gewünschten Daten.
KB:knigge
Benutzeravatar
Pionier
Mitglied
Beiträge: 232
Registriert: 29.12.2007 19:55
Wohnort: Niebüll (S-H)
Kontaktdaten:

Re: Problem mit explode() und phpBB Debug

Beitrag von Pionier »

Pyramide hat geschrieben:Wenn du den Quellcode der Datei http://www.savekb.de/forenplugin/kb.php?uni=05&limit=5 anguckst, dann siehst du dass die "letzte" Zeile noch mit einem <br> aufhört, also die eigentlich letzte Zeile aus einem Leerstring besteht.
Das hatte ich noch nicht gemacht :oops:

Aber da nur das letzte <br> das Problem verursacht, lösche ich es mit folgender Codezeile

Code: Alles auswählen

$contents = preg_replace('/(?:<br ?\/?>|\s)*$/', '', $contents);  
Also sieht mein Code nun so aus:

Code: Alles auswählen

    $contents = file_get_contents("http://www.savekb.de/forenplugin/kb.php?uni=$savekb_uni&limit=$savekb_limit");

$contents = preg_replace('/(?:<br ?\/?>|\s)*$/', '', $contents); 

$lines = explode('<br>', $contents);

foreach($lines AS $line)
    {
        $datas = explode(';', $line); 

            $template->assign_block_vars('block_savekb', array(
                'ANGREIFER'       => $datas['0'], 
                'VERTEIDIGER'     => $datas['1'],
                'UNITS'           => $datas['2'],
                'LINK'            => $datas['3'] 
            ));
    }
 
Vielen Dank für die schnelle und kompetente Hilfe
MFG Pionier
Antworten

Zurück zu „[3.0.x] Mod Bastelstube“