Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] file_put_contents i zapisywanie wielu plików
Forum PHP.pl > Forum > Przedszkole
pzcjnr
Witam,

Mój skrypt ma za zadanie:
1. Przypisać z textarea wartości do tablicy(według linii)
2. Utworzyć plik dla każdego klucza tablicy z odpowiednią nazwą i treścią.

Wszystko mi działa. Wszystko jest dobrze. Poza jednym.

Powiedźmy wpisuje 4 linie w textarea, skrypt tworzy mi 4 pliki. Ale tylko ten z ostatniego obiegu pętli (czyli ostatnia podana linia w textarea) jest prawidłowy.
Reszta pod przeglądarką daje 404 mimo że na ftp je widzę. Tylko nie mogę w nie wejść, nie moge zmienić ich chmodów. Mogę tylko usuwać. W każdym wypadku funkcja file_put_contents nie zwraca błędu.

O co tu może chodzić?

Demo:
Kod
http://neve.pl/urls.php



  1. $domain = explode("\n", $_POST['domain']);
  2. $ldomen = count($domain);
  3.  
  4. $wysz = file('./list/wysz.txt');
  5. $lwysz = count($wysz);
  6. $stat = file('./list/staty.txt');
  7. $lstat = count($stat);
  8.  
  9.  
  10. for ($i=0;$i<$ldomen;$i++){
  11.  
  12. if (preg_match ('#http://#is', $domain[$i] )){
  13. $domain[$i] = substr($domain[$i],7);
  14. }
  15.  
  16. if (preg_match ('#/$#', $domain[$i] )){
  17. $domain[$i] = substr($domain[$i], 0, strpos($domain[$i], "/"));
  18. }
  19.  
  20. if ($w=preg_match ('#^www\.#', $domain[$i] )){
  21. $domain[$i] = substr($domain[$i],4);
  22. }
  23.  
  24.  
  25. for ($j=0;$j<$lwysz;$j++){
  26.  
  27.  
  28. $wyszlista[$i] .= preg_replace('#domena.pl#',$domain[$i],$wysz[$j]);
  29. }
  30.  
  31. for ($j=0;$j<$lstat;$j++){
  32.  
  33. $statlista[$i] .= preg_replace('#domena.pl#',$domain[$i],$stat[$j]);
  34. }
  35.  
  36.  
  37.  
  38. $sciezka[$i] = 'files/'.$domain[$i].'-wysz.txt';
  39. //$sciezka_stat = $domain[$i].'-stat.txt';
  40.  
  41.  
  42. if (!is_dir('files')){
  43. mkdir('files',0744);
  44. }
  45.  
  46. $status[$i] = file_put_contents($sciezka[$i],$wyszlista[$i]);
  47.  
  48.  
  49.  
  50. echo $status[$i].'<br />';
  51. echo $sciezka[$i].'<br />';
  52. echo $domain[$i].'<br />';
  53. echo '<a href="'.$_SERVER['HOST'].$sciezka[$i].'">Wyszukiwarki</a>';
  54.  
  55.  
  56. }


Sephirus
Witaj.

Wydaje mi się, że zapomniałeś o tym, że sam podzial po "\n" może być niewystarczający - toteż twój skrypt się gubi. W zależności od systemu to może być "\r\n" przykładowo...

Spróbuj odpalić ten skrypt:

  1. $domain = explode("\n", $_POST['domain']);
  2. $ldomen = count($domain);
  3.  
  4. $wysz = file('./list/wysz.txt');
  5. $lwysz = count($wysz);
  6. $stat = file('./list/staty.txt');
  7. $lstat = count($stat);
  8. $wyszlista = $sciezka = $status = $statlista = array();
  9.  
  10. for ($i = 0; $i < $ldomen; $i++) {
  11.  
  12. // pozbycie się http i www
  13. $domain[$i] = preg_replace('#^http://(www\.)*#i','',$domain[$i]);
  14. // usuniecie niepotrzebnych znakow
  15. $domain[$i] = preg_replace('#[^a-z0-9\-_\.]+#si','',$domain[$i]);
  16.  
  17. for ($j = 0; $j < $lwysz; $j++) {
  18. $wyszlista[$i] .= preg_replace('#domena.pl#', $domain[$i], $wysz[$j]);
  19. }
  20.  
  21. for ($j = 0; $j < $lstat; $j++) {
  22. $statlista[$i] .= preg_replace('#domena.pl#', $domain[$i], $stat[$j]);
  23. }
  24.  
  25. $sciezka[$i] = 'files/' . $domain[$i] . '-wysz.txt';
  26.  
  27. if (!is_dir('files')) {
  28. mkdir('files', 0744);
  29. }
  30.  
  31. $status[$i] = file_put_contents($sciezka[$i], $wyszlista[$i]);
  32.  
  33. echo $status[$i] . '<br />';
  34. echo $sciezka[$i] . '<br />';
  35. echo $domain[$i] . '<br />';
  36. echo '<a href="' . $_SERVER['HOST'] . $sciezka[$i] . '">Wyszukiwarki</a>';
  37. }


wink.gif Pozdro
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.