Alguém me pode ajudar com um "Parse error" em PHP

Lit

Power Member
Olá a todos, eu tenho este código em php que me está a dar um erro e não consigo achar o erro, alguém me pode ajudar?

O erro que me dá diz: Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in .../public_html/galeria/gallery.php on line 12

Aqui está o código
PHP:
<?php

    function genGallery($path)
    {
        $files = scandir("$path");
        $pages = array_chunk($files, 12);

        $pn = (int) $_GET['page'];

        foreach ($pages[$pn] as $file) {
            if ($file != "." && $file != "..") {
                echo "<a href="images/$file" rel="lightbox[group]" title="">";
                echo "<img src="images/$file" alt="" />n";
                echo "</a>n";
            }
        }

        for ($i = 1; $i < count($pages) + 1; $i++) {
            echo "<a href="index.php?page=$i">$i</a>n";
        }
    }

?>

Obrigado.
 
tens que fazer escaping as quotes:

PHP:
 <?php

    function genGallery($path)
    {
        $files = scandir($path);
        $pages = array_chunk($files, 12);

        $pn = (int) $_GET['page'];

        foreach ($pages[$pn] as $file) {
            if ($file != "." && $file != "..") {
                echo "<a href=\"images/{$file}\" rel=\"lightbox[group]\" title="">";
                echo "<img src=\"images/{$file}\" alt="" />n";
                echo "</a>n";
            }
        }

        for ($i = 1; $i < count($pages) + 1; $i++) {
            echo "<a href=\"index.php?page={$i}\">{$i}</a>n";
        }
    }

?>

Ou então usas single-quotes:

PHP:
    function genGallery($path)
    {
        $files = scandir($path);
        $pages = array_chunk($files, 12);

        $pn = (int) $_GET['page'];

        foreach ($pages[$pn] as $file) {
            if ($file != '.' && $file != '..') {
                echo '<a href="images/'.$file.'" rel="lightbox[group]" title="">';
                echo '<img src="images/'.$file.'" alt="" />n';
                echo "</a>n";
            }
        }

        for ($i = 1; $i < count($pages) + 1; $i++) {
            echo '<a href="index.php?page='.$i.'">$i</a>n';
        }
    }

Cada vez que usas uma quote do mesmo tipo tens que fazer escaping com um \ caso não queras que acabe ali a string.
E a diferença das single quotes para as double é que as single o PHP não procura por código para executar.

$variavel = 123;

echo 'texto aqui $variavel';
mostra: texto aqui $variavel

echo "texto aqui $variavel';
mostra : texto aqui 123

as {} que usei serve para quando tens a variavel próxima de chars que não sejam da variável (para evitar erros). Exemplo:

echo "{$variavel}textoaqui";
se não tivesse as {} o PHP procurava pela variavel $variaveltextoaqui

Quando não procuras por variaveis usa as single quotes (como fiz no if na segunda "caixa")

Aqui:
scandir("$path")
basta:
scandir($path)
 
Última edição:
PHP:
<?php


    function genGallery($path)
    {
        $files = scandir("$path");
        $pages = array_chunk($files, 12);


        $pn = (int) $_GET['page'];


        foreach ($pages[$pn] as $file) {
            if ($file != "." && $file != "..") {
                echo '<a href="images/$file" rel="lightbox[group]" title="">';
                echo '<img src="images/'.$file.'" alt="" />n"';
                echo "</a>n";
            }
        }


        for ($i = 1; $i < count($pages) + 1; $i++) {
            echo '<a href="index.php?page='.$i.'">$i</a>n"';
        }
    }


?>

Não dá erros, mas não faço ideia se faz o que tu queres.
 
Última edição:
Obrigado barricas e HLopes pela ajuda, a segunda opção do barricas já fez com que mostrasse a galeria mas ainda não funciona como deveria, supostamente este código funciona, o site de onde o tirei tinha um demo mas já não está disponível, se me puderem ajudar agradeço.

Aqui o link do site com o código e foto da galeria. ---> http://www.webcrunch.in/programming...-pagination-goodness-within-five-minutes.html

Se tiverem alguma sugestão de outro código é bemvindo.

Obrigado
 
Back
Topo