Matimor
21.09.2009, 18:57:15
Mam zrobiony odczyt danych z pliku tak aby było explode na znak \n ale teraz mam taki problem, ponieważ nie wiem jak zrobić aby zapisało mi plik po zmianie z powrotem z \n
function setWartosc($plik, $from, $to)
{
$i=0;
while($content[$i])
{
if($var[0] == $from)
{
$var[1] = $to;
}
$ret_val .= $var[0]."=".$var[1]."\n";
$i++;
}
file_put_contents($plik, $ret_val);
}
Pomoże mi ktoś w końcu? ...
skowron-line
21.09.2009, 19:02:35
Jeżeli chcesz "przejechać" plik linijka po linijce to
file
Skoro tak bardzo zależy Ci na
explode to dla odwrotnego efektu proponuje
implode
Matimor
22.09.2009, 06:37:56
Pokaż jak to ma wyglądac na tym kodzie co ci podałem
Fifi209
22.09.2009, 06:42:30
Normalnie...
$zmienna = array('linia1', 'linia2', 'linia3');
Matimor
22.09.2009, 07:29:58
Ty ale ja tych linii tam mam chyba ze 500 ...
Tak zapisuje mi to i odczytuje
Cos=zmienna np. Cos=1
A manual poczytać i samemu popróbować to już ciężko.. tak ?
// na poczatku tworzymy tablice w pętli
$ret_val[$i] = $var[0]."=".$var[1];
// a potem pakujemy do pliku
file_put_contents
($plik, implode("\n", $ret_val));
Matimor
22.09.2009, 13:41:20
no niby wszystko ok, ale w pliku zmian nie widze...
to jak wygląda teraz Twój plik ? pokaż kawałek zawartości..
Matimor
22.09.2009, 13:52:18
Wygląda tak jak był...
Gra zapisuje go w ciągu znaków
Kod
cos=1\ncos=2\cos=3
Funkcja czyta go i usuwa \n
Kod
cos=1
cos=2
cos=3
Funkcja zapisuje go w kolumnach tak jak usunęło \n
Kod
cos=1
cos=2
cos=3
A ma być:
Kod
cos=1\ncos=2\cos=3
OK, a wiesz co to jest \n
Matimor
22.09.2009, 13:57:25
Tak wiem, taki kwadracik się robi. a \r\n to po prostu enter ;d
No właśnie, ten kwadracik to jest znak nowej linii czyli \n. Dla skryptu jest to niezależne, czy ma kwadracik czy \n - odczyta go tak samo bo dane są przetwarzane binarnie. Jeżeli chcesz widzieć te znaczki \n to po prostu w funkcji implode() zmień "\n" na '\n'.
Matimor
22.09.2009, 14:05:08
Czyli jak wywale explode to czytać będzie normalnie?
Teraz działa ale dodaje mi \n i zapisuje tylko pierwsze 3 zmienne. W dodatku znak \n jest widoczny, a powinien być kwadracik.
Nie.. explode zamienia Ci wczytaną zawartość pliku na tablicę, której elementy powstają przez separację za pomocą znaku nowej linii. Potem przecież wykonujesz operacje na tablicy, a następnie funkcją implode łączysz elementy tablicy w jedną, spójną całość i pakujesz do pliku. Rozumiesz ?
Cytat(Matimor @ 22.09.2009, 14:52:18 )

Funkcja zapisuje go w kolumnach tak jak usunęło \n
Kod
cos=1
cos=2
cos=3
A ma być:
Kod
cos=1\ncos=2\cos=3
Cytat(Matimor @ 22.09.2009, 15:05:08 )

W dodatku znak \n jest widoczny, a powinien być kwadracik.
Zdecyduj się

W temacie masz pokazane różne sposoby na uzyskanie swojego rozwiązania, poczytaj manual, pokombinuj.
Matimor
22.09.2009, 14:09:09
Ok ok rozumie, ale dlaczego zapisuje mi tylko pierwsze 3 zmienne zamiast 500 ?
Może tylko tyle wczytuje ? sprawdź rozmiar czytanego pliku, rozmiar tablicy $content itp..
Matimor
22.09.2009, 14:21:56
Nie no dalej to samo, ja nie wiem jak to zrobić, cholera :/
Pokaż kod oraz wywołanie funkcji.
Byłoby też dobrze gdybyś gdzieś na jakiś serwer wrzucił ten plik, który chcesz przetwarzać.
Matimor
22.09.2009, 14:30:00
Plik, który przetwarzam jest na serwerze. Funkcje masz w pierwszym poście.
function setWartosc($plik, $from, $to)
{
$i=0;
while($content[$i])
{
if($var[0] == $from)
{
$var[1] = $to;
}
$ret_val[$i] = $var[0]."=".$var[1];
$i++;
}
file_put_contents
($plik, implode('\n', $ret_val));
}
Chodziło mi o to abym mógł zobaczyć ten plik, o ile to możliwe.
Pokaż też przykładowe wywołanie tej funkcji w kodzie.
Matimor
22.09.2009, 14:37:25
Tak wygląda zawartość pliku nie ma po co go gdzies wrzucać.
Kod
Data=xqzxhw4\nRank=0\nKoszy
Wykorzystanie:
setWartosc("data.txt", "Key", $rand);
Cytat(Matimor)
Ok ok rozumie, ale dlaczego zapisuje mi tylko pierwsze 3 zmienne zamiast 500 ?
No to sorry ale ja już Cie nie rozumiem. Skąd niby ma się wziąść te 500 zmiennych ? Same się nie wyczarują.. Z tego pliku otrzymasz tablicę 3-elementową i tyle. Wg. mnie wszystko działa dobrze.
Matimor
22.09.2009, 14:45:46
Jest plik, podczas rejestracji jest on kopiowany i tworzy ten plik co teraz widzisz, później każdy plik to dany użytkownik i ma on mieć dostęp do strony za pomocą tego pliku, który został utworzony z kopii. W pliku example znajdują się zmienne, które są wklejane do tworzonego pliku, zmienne sa zapisane prawidłowo czyli przez \n ale gdy użyję, tej najważniejszej funkcji czyli setWartosc to usuwa mi z pliku te wszystkie /n i chce aby po put_ dodawało mi to z powrotem ...
fander
22.09.2009, 14:56:50
Jakie kodowanie masz w tym pliku tekstowym ?
To jak ma w końcu wyglądać ten plik ? ma zawierać \n czy "kwadraciki"
Jeżeli \n to zostaw tak jak jest, jeżeli "kwadraty" to w funkcji implode zmień apostrofy na cudzysłów.
Matimor
23.09.2009, 13:50:28
Kodowanie utf8 bez boom zaraz do was napisze ide do sklepu...
Nie no tego nie da się zrobić :/
Ma ktoś jakieś pomysły? ...
fander
23.09.2009, 15:02:04
jaki kod w utf8 ma ten kwadracik który chcesz wyświetlić.
Czy enter w utf8 to 0x10 ?
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.