Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

renatorudnicki

[Resolvido] Erro no script

Recommended Posts

Ola pessoal.

 

Estou tentando fazer um script que faça o seguinte:

 

- Leia um arquivo .txt com endereços de um site

- A cada url que ele ler, ele baixa a imagem do link (um arquivo .gif)

- Baixe o arquivo com o nome do arquivo .gif e não o nome da url inteira

 

Eu já consegui fazer ele funcionar colocando a url na mão, mas quando eu tento fazer ele ler o arquivo .txt com cerca de umas 500 url's ele da erro:

 

Parse error: parse error in C:\xampp\htdocs\teste\teste2.php on line 13

 

 

A maneira que eu consegui fazer é a seguinte:

<?php
$url = 'http://images.tibiabr.com/Imgs/Conteudo/criaturas/morgaroth.gif';
$a = basename('http://images.tibiabr.com/Imgs/Conteudo/criaturas/morgaroth.gif');
$img = $a;
file_put_contents($img, file_get_contents($url));
?

Porém, eu tenho umas 400 imagens para baixar, e por isso eu preciso que ele leia um arquivo .txt que eu tenho com todas as imagens. O modelo do arquivo com os links é o seguinte:

criaturas.txt
http://images.tibiabr.com/Imgs/Conteudo/criaturas/penguin.gif 
http://images.tibiabr.com/Imgs/Conteudo/criaturas/greenfrog.gif 
http://images.tibiabr.com/Imgs/Conteudo/criaturas/skunk.gif 
http://images.tibiabr.com/Imgs/Conteudo/criaturas/goblin.gif 
http://images.tibiabr.com/Imgs/Conteudo/criaturas/badger.gif 
http://images.tibiabr.com/Imgs/Conteudo/criaturas/rat.gif 
http://images.tibiabr.com/Imgs/Conteudo/criaturas/thief.gif 
http://images.tibiabr.com/Imgs/Conteudo/criaturas/undead_jester.gif 

E o script que estou tentando usar para baixar todos .gif é o seguinte:

<?php
$fp = fopen("./criaturas.txt", "r");

while (!feof($fp)) {
$char .= fgetc($fp);

$i = nl2br($char);

$url = $i;
$a = basename($i);
$img = $a;
file_put_contents($img, file_get_contents($url))
}
fclose($fp);
?

 

 

Alguém poderia me ajudar a fazer o script acima funcionar ?

 

[]'s

Renato

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela resposta Victor !!!

 

Realmente faltava um ";" onde você falou, porém ainda o script não funcionou como deveria. Deixando da maneira abaixo, ele "funciona", porém ele não baixa os arquivos .gif e sim arquivos com o pedaço do nome da url, ex: htt, img, tibibr. etc...

 

Pelo que eu notei o problema está na linha onde eu tenho $a = basename($i); pois se eu dou um echo na variáve $a, ela me retorna como conteúdo um ">" e não a lista de url's como está na variável $i.

 

Será que poderiam me ajudar a resolver mais esse problema ?

 

[]'s

Renato

 

 

 

<?php
$fp = fopen("./criaturas.txt", "r");

while (!feof($fp)) {
$char .= fgetc($fp);

$i = nl2br($char);

$url = $i;
$a = basename($i);
$img = $a;
file_put_contents($img, file_get_contents($url));
}
fclose($fp);
?

Compartilhar este post


Link para o post
Compartilhar em outros sites

aqui você está concatenando, é isso mesmo que está querendo??

$char .= fgetc($fp);

e aqui você sabe o que está fazendo??

a função nl2br que está colocando "<"

$i = nl2br($char);

veja no manual

http://www.php.net/manual/pt_BR/function.nl2br.php

 

agora em relação as funcões

file_put_contents() e file_get_contents() nunca precisei utilizá-las e não estou hábil a te ajudar se o erro for em uma delas

 

veja no manual

http://www.php.net/manual/pt_BR/ref.filesystem.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fora o que já comentaram acima, não vejo lógica em ficar incremento a variavel a cada escrita.

Acho que você deve fechar o while antes.

 

$char = null;
while (!feof($fp)) {
   $char .= fgetc($fp);
}
//rotina para escrever no arquivo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera, obrigado pela atenção e ajuda.

 

Infelizmente php não é muito minha praia. De qualquer forma, acabei resolvendo pelo linux, que é bem mais simples para mim.

Precisei apenas de 1 linha de comando para fazer o que eu estava querendo:

 

wget -i criaturas.txt

 

 

[]'s

Renato

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.