Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Sprawdzanie linkow z pliku txt
Forum PHP.pl > Forum > Przedszkole
Saikaze
Witam! Jestem poczatkujacy jesli chodzi o php i mam pewien problem. Otoz, chcialbym napisac skrypt, ktory pobiera linki z pliku txt i sprawdza czy istnieja (Zarowno lokalnie jak i na zewnetrznych url). Aktualnie skrypt jest mi potrzebny zeby sprawdzic 500 linkow roznego typu. Sporo grzebalem po necie i jak na razie udalo mi sie stworzyc cos takiego:

  1. <?php
  2. $nazwaPliku = "plik.txt";
  3. $tablica = array();
  4. $tablica2 = array();
  5. $i = 0;
  6.  
  7. if (is_file($nazwaPliku))
  8. {
  9. $plik = fopen($nazwaPliku, "r");
  10.  
  11. while(!feof($plik))
  12. {
  13. $linia = fgets($plik, 1024);
  14. $tablica[$i] = $linia;
  15. $i++;
  16.  
  17. if(fopen($linia,'r')) echo 'Istnieje';
  18. else echo 'Nie istnieje';
  19. echo '<br/>';
  20.  
  21. }
  22.  
  23. fclose($plik);
  24.  
  25. }
  26. else
  27. {
  28. print("Blad podczas otwierania pliku !!!");
  29. }
  30.  
  31. ?>


Probowalem juz kilku rozwiazan, jednak ciagle cos robie zle, bo tylko ostatni link sprawdza poprawnie, a wszystie wczesniejsze definiuje jako nie aktywne. Bede wdzieczny za jakakolwiek pomoc

Pokaze o co dokladnie mi chodzi bo udalo mi sie osiagnac czesciowo to co chce:
  1. <?php
  2.  
  3. echo '
  4. <form method="POST">
  5. <input type="text" name="url1" />
  6.  
  7. <input type="submit" name="url" value="Check" />
  8.  
  9. </form>
  10. ';
  11.  
  12. $plik = $_POST['url1'];
  13. echo $plik.' ';
  14. if(@fopen($plik, 'r')) echo 'Istnieje';
  15. else echo 'Nie istnieje';
  16.  
  17. echo '<br/>';
  18.  
  19. ?>


Wpisuje dowolny adres, czy to na localhost, czy na serwerze ftp i sprawdzanie dziala. Cos sie wysypuje przy wczytywaniu z pliku txt. Interesuje mnie takze opcja zebym mogl wkleic te linki na stronce bez tworzenia i zalaczania pliku txt. Jak juz wspomnialem, zaczynam z php takze pewnie robie jakis podstawowy blad ;/
CuteOne
Jeżeli każdy link jest w osobnej lini wczytaj go za pomocą funkcji file() - tworzy ona tablicę, której każdy rekord odpowiada jednej linii. Następnie w pętli za pomocą funkcji file_get_contents() wczytaj zawartość strony i sprawdź czy istnieje.
Saikaze
Zastosowalem funkcje file() i jak mowiles, wszystko ladnie zczytalo do tablicy, jednak mam problem z file_get_contents(). Aktualnie moj kod wyglada tak:
  1. $mojplik = file('plik.txt');
  2. $si = sizeof($mojplik);
  3. for ($i=1;$i<=$si;$i++)
  4. {
  5.  
  6. echo $mojplik[$i].' ';
  7. $str = $mojplik[$i];
  8. if(@fopen($str, 'r')) echo 'Istnieje';
  9. else echo 'Nie istnieje';
  10.  
  11. echo '</br>';
  12. }


echo wyswietla mi linki ktore dzialaja, jednak sprawdzanie poprawnosci pliku nie dziala nadal ;/ Probowalem z file_get_contents() ale nic to nie zmienilo.
CuteOne
Cytat
sprawdzanie poprawnosci pliku nie dziala nadal

pokaż link do tego pliku i czy znajduje się u ciebie na serwerze
Saikaze
Dawalem rozne linki, z tego samego folderu jak i z serwera ftp. Udalo mi sie rozwiazac problem:

  1. $mojplik = file('plik.txt');
  2. $si = sizeof($mojplik);
  3. for ($i=1;$i<=$si;$i++)
  4. {
  5.  
  6. echo $mojplik[$i].' ';
  7. $str = trim($mojplik[$i]);
  8. if(@fopen($str, 'r')) echo 'Istnieje';
  9. else echo 'Nie istnieje';
  10.  
  11. echo '</br>';
  12. }


Pomoglo zastosowanie funkcji trim(). Mimo ze dokladnie sprawdzalem, gdzies byly ukryte znaki. Teraz wszystko dziala bez zarzutu. Wklejam 100 linkot do pliku txt i sprawdza wszystko bardzo dobrze.

@CuteOne - thx za pomoc. I mam jeszcze jedno pytanie. Chcialbym teraz sprobowac zastosowac ten skrypt do formularza textarea, tak zeby wklejac linki online bez koniecznosci tworzenia i modyfikacji pliku txt. Mozesz mi powiedziec jaka funkcja bedzie mi do tego potrzebna?

Zauwazylem tez ze poprzez funkcje fopen wszystko dziala bardzo powoli. Zainteresowalem sie funkcja file_exist i dziala bardzo szybko, z tym ze nie sprawdza mi zewnetrznych adresow ;/
CuteOne
fopen otwiera plik - tworzy jego uchwyt.
file_exists tylko sprawdza czy plik istnieje, może chodziło o file_get_contents?

Co do textarea:

Linki wrzucane - jeden na jedną linie(separatorem jest enter):
  1.  
  2. $array = explode("\n\r", $_POST['urls']);
  3.  
  4. foreach($array as $key => $value) {
  5.  
  6. //sprawdz $value
  7. }
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.