PHP if (($lines[$x] == "\r") || ($lines[$x] == "")) 2x true möglich?

Naja Netbeans hat schon recht. Normalerweise sollte man die Variable vorher initialisieren :D
 
Trotzdem funktioniert die Klasse nicht bei mir.
PHP:
            if ((strpos($line, '[') === 0) && (ctype_alpha(substr($line,1,1)) === true)) {
                $infoName = substr($line, 1, strpos($line, ' ') - 1);
                $infoValue = substr($line, strpos($line, '"') + 1, -2);
                if (!empty($game)) {
                    $game->addInfo($infoName, $infoValue);
                }

funktioniert besser.
 
Merkwuerdig was genau funktioniert denn da nicht? Debug Ausgaben mit var_dump(). Welche PHP Version verwendest du denn?
 
PHP:
    function readGamesFromPgn($file) {
        if (!file_exists($file))
            return [];

        $content = file_get_contents($file);
        $lines = explode("\n", $content);
        $games = [];
        $game = null;

        foreach ($lines as $line) {
            // Neues Spiel gefunden
            if (preg_match('/(\[Event "(.*)"\])/', $line)) {
//            if (strpos($line, '[Event') !== false) {
                if (!empty($game)) {
                    $games[] = $game;
                }
                $game = new GameOfPgn();
            }
            if ((strpos($line, '[') === 0) && (ctype_alpha(substr($line,1,1)) === true)) {
                $infoName  = substr($line, 1, strpos($line, ' ') - 1);
                $infoValue = substr($line, strpos($line, '"') + 1, -2);
                if (!empty($game)) {
                    $game->addInfo($infoName, $infoValue);
                }
            } else {
                if (!empty($line) && !empty($game)) {
                    $game->addMoves($line);
                }
            }
        }
        if (!empty($game)) {
            $games[] = $game;
        }
        return $games;
    }
Diese Funktion läuft.
Deine produziert dieses:
PHP:
Fatal error: Can't use function return value in write context in /home/devphpde/public_html/pgn/class.game.php on line 53
Das ist diese Zeile
PHP:
                if (!empty(trim($line)) && !empty($game)) {
PHP Version 5.4.45 ini_set("display_errors", "1"); error_reporting(E_ALL);

Edit: Jetzt funktioniert die Funktion auch nicht mehr... never touch a running file
Edit2: Jo das liegt am trim und nicht am preg_match.
if (!empty($line) && !empty($game)) {
 
Zuletzt bearbeitet:
Ah okay seit Version 5.5 gibts den Fehler mit trim und empty nicht mehr :D
Falls moeglich solltest aber schon Version 5.5 oder 5.6 verwenden. :D
 
Da bin ich ja auf meinen Hoster angewiesen. Ich kann ihn ja mal anschreiben, ob er mal upgraden kann.
 
smallwall schrieb:
Da bin ich ja auf meinen Hoster angewiesen. Ich kann ihn ja mal anschreiben, ob er mal upgraden kann.

Viel Erfolg dabei...

Den Fehler kannst du beheben indem du einfach
PHP:
$tmp = trim($line);
if (!empty($tmp) && !empty($game)) {

draus machst (vorrausgesetzt $tmp gibts noch nicht).
 
Zurück
Oben