Odczyt z pliku

0

mam kod który zapisuje dane do pliku w ten sposób:

$text2 = trim($_POST['t'])."`".trim($_POST['f'])."`".trim($_POST['password'])."`".trim($_POST['link1'])."`".trim($_POST['link2'])."`".trim($_POST['link3']). "`" . trim($_POST['time']);
file_put_contents('Lista/' . $filename, $text2);

Tak wygląda zapisany plik:
11Brakaaabbbccc1
Odczyt:

$cfg = file("Lista/".$filename);
foreach($cfg as $value) 
    {
        $exp = explode("`",$value);
    }

Dane link1,link2,link3 do zapisu są wczytywane z textarea na stronie.
Wszystko działa pięknie, pod warunkiem że w tych polach znajdują się pojedyncze linki (1 wiersz).
Natomiast gdy dodam ich więcej, kod zapisuje je w ten sposób:

1`1`Brak`aaa1
aaa2`bbb1
bbb2`ccc1
ccc2`1 

I tu zaczyna się problem z odczytem tego pliku, ponieważ explode widzi te entery chyba i traktuje je jako osobne stringi.
Wynik var_dump w pierwszym (dobrym) przypadku:
array(1) { [0]=> string(22) "11Brakaaabbbccc1" }
oraz w drugim (z problemem):
array(4) { [0]=> string(15) "11Brakaaa1 " [1]=> string(11) "aaa2bbb1 " [2]=> string(11) "bbb2ccc1 " [3]=> string(6) "ccc21" }

Co zrobić aby ten drugi przypadek był odczytywany tak samo jak pierwszy?
Jest to w ogóle możliwe z tymi funkcjami? Nie jestem zbyt zaawansowany w php, dlatego brak mi pomysłu jak to inaczej rozwiązać, aby efekt mnie zadowalał.
Optymalizacją kodu się nie przejmujcie. Może dało się to napisać lepiej, ale nie zależy mi na tym :D Ważne żeby działało jak chce. To i tak jest tylko do użytku własnego.

0

Nie możesz zapisać tego jako json?

0

Nie znam JavaScriptu. Jedyne co potrafię to skopiować gotowca i prześledzić jak działa aby go zrozumieć ;p
Ogólnie chodzi o to aby zapisać dane z pól do pliku i jakoś je odseparować, tak aby potem przy odczycie można je było przypisać do zmiennych.
W przypadku większości danych nie ma problemu bo są to pojedyncze cyfry lub słowa. Wyjątkiem są tutaj te 3 zmienne "linki" które zawierają za każdym razem inną ilość linków.
Jedyne co może być ułatwieniem to że w link1 jest tyle samo linków co w link2 i link3.

1

json to nie tylko js... w podobny sposób sesja jest zapisywana na serwerze w plikach i bazie. To jest format który pozwala odseparować dane. Po co wymyślać koło na nowo?

http://php.net/manual/pl/function.json-encode.php
http://php.net/manual/pl/function.json-decode.php

0

Tak czytam z Twojego linku że "Ta funkcja działa tylko na danych zakodowanych w formacie UTF-8. " Ja koduje w ISO-8859-2 i nie mogę tego zmieniać. Miałem ogromne problemy i wiele błędów z przekodowaniem tekstu z utf-8 na ISO-8859-2, dlatego muszę kodować od razu całość w ten sposób.

0

To czemu korzystasz z tak starego formatu którego dziś nikt nie stosuje?

0

Ponieważ mój program wysyła curlem dane na pewne forum (pisze posta) które jest w ten sposób kodowane.
Mimo to obczaiłem że ten 2 komendy które napisałeś faktycznie rozwiązują mój problem. Zobaczę jak to się ma do kodowania bo na razie nie widzę problemów.

EDIT: Mimo kodowania wszystko działa. Żadne litery nie są w linkach przekręcane i nie wywala żadnych błędów. Nic tylko się cieszyć. Oby rozwiązanie zadziałało na dłuższą mete.

1 użytkowników online, w tym zalogowanych: 0, gości: 1