Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Dzielenie pliku tekstowego na stringi
Forum PHP.pl > Forum > Przedszkole
HgReed
Witam.
Otóż chcąc udostępnić kilku zaprzyjaźnionym osobom miejsce na serwerze napisałem skrypt który pliki "ładuje" na serwer i zapisuje ich nazwę, folder zapisania i opis. Tu rodzi się pytanie - jak rozbić GIGANTYCZNY ciąg znaków na stringi pojedyńcych plików, a potem wyciągnięcie z nich nazwy pliku wraz z lokalizacją (by móc z tego zrobić linka do downloadu) i jego opis.

Przykładowy string logu (2 pliki):
plik.jpg||upload/test||Przykładowy plik|___|plik231.doc||upload/innyuserodziwnejnazwie||taki inny plik|___|

Póki co, naskrobałem tyle :

  1. <?php
  2. $logFileLineBreak = "|___|";
  3. $logFile = "upload/uploadLog.txt";
  4. explode($logFileLineBreak,$logFile);
  5. list($userFile,$userFileDir,$userFileDescription) = explode("||", $logFileLineBreak);
  6. ?>


Powiem tak... To nie działa sad.gif Wie ktoś jak to skończyć? Czy w ogóle dobrze się za to biorę?

Pozdro
nospor
dla explode jako drugi parametr zapodaje się tekst, który chcemy explodować. Ty tego nie robisz.

Przenosze na przedszkole
krowal
  1. foreach(explode('|___|',$logFile) as $f){
  2. list($userFile,$userFileDir,$userFileDescription) = explode('||', $f)
  3. }
HgReed
Krowal - dzięki, ale nie działa sad.gif I do tego kasuje mi loga -.- Co robie źle?
nospor
Nie działa bo krowal zarówno jak ty nie exploduje po ciągu, który ma być explodowany. Czemu nie czytasz wszystkich postów, tylko skupiasz się na tych gdzie jest kod?

$logFile nie jest ciągiem, który chcecie explodować. $logFile to jedynie ścieżka do pliku.
HgReed
Dobra. Zrozumiałem o co chodziło (chyba). Napisane mam tak :

  1. <?php
  2. $logFile = file_get_contents("upload/uploadLog.txt");
  3. $testingRaw = explode('|_|_|', $logFile);
  4. $testingCooked = explode('||', $testingRaw[0]);
  5. echo $testingCooked[0] . "<br />";
  6. echo $testingCooked[1] . "<br />";
  7. echo $testingCooked[2] . "<br />";
  8. ?>


I prawidłowo mi zwraca nazwe, dir i opis. Mam tylko pytanie - jak to "z'automatyzować" ? Żebym nie musiał do każdego pliku dodawać ostatnich czterech linijek kodu. To będzie foreach() ?
nospor
Tak, foreach po $testingRaw
HgReed
Dobra - działa ! smile.gif Po rozkminianiu foreach() i troche bawieniu się - wyszło :

  1. <?php
  2. $logFile = file_get_contents("upload/uploadLog.txt");
  3. $testingRaw = explode('|_|_|', $logFile);
  4. foreach($testingRaw as $testingHalfCooked)
  5. {
  6. $testingFullCooked = explode('||', $testingHalfCooked);
  7. echo $testingFullCooked[0];
  8. echo $testingFullCooked[1];
  9. echo $testingFullCooked[2];
  10. }
  11. ?>


Już sobie "okleiłem" to HTML'em i jest - mam pełnoprawny up i download smile.gif
Dzięki nospor, dzięki.

Temat do zamknięcia.
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.