![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 381 Pomógł: 12 Dołączył: 9.07.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam, Mam plik test.txt który wygląda tak:
ID#Imie Nazwsiko##ID2#UL. nazwa_ulicy Jak wyświetlić osobno: Imię: Nazwisko: Nazwa ulicy(bez tego UL.): -------------------- GG: 564555
|
|
|
-cuterOne- |
![]()
Post
#2
|
Goście ![]() |
explode('#') do utworzenia tablicy
explode('.')/substr()/strtr() do wycięcia/usunięcia ul. |
|
|
-cuterOne- |
![]()
Post
#3
|
Goście ![]() |
imie i nazwisko też explode(" ")
![]() |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Albo uzyć odpowiedniego preg_match'a typu:
Jest to w zasadzie jedna linijka, metoda kolegi wyżej napewno będzie miała więcej linijek ale będzie bardziej wydajna ![]() Wybór należy do Ciebie HTH! ![]() Ten post edytował Sephirus 18.10.2011, 11:47:39 -------------------- If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;) Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka... |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 381 Pomógł: 12 Dołączył: 9.07.2007 Ostrzeżenie: (0%) ![]() ![]() |
HMm napisałem coś takiego:
Ale czy jest to wydajne ? I czy nie można tego zrobić lepiej / szybciej ? I wywala mi błąd na końcu że ostatnia linijka jest pusta ... Notice: Undefined offset: 1 in test.php on line 31 Notice: Undefined offset: 4 in test.php on line 32 Notice: Undefined offset: 1 in test.php on line 34 Notice: Undefined offset: 1 in test.php on line 34 ID: - Imię: - Nazwisko: - Ulica: Jak zrobić aby sprawdzał czy ostatnia linijka jest pusta i jak tak to ma nie wyświetlać ? Ok zrobiłem to z tą ostatnią linią teraz to wygląda tak:
Ale czy jest to wydajne ? I czy nie można tego zrobić szybciej / lepiej ? Ten post edytował Elber 18.10.2011, 11:54:45 -------------------- GG: 564555
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Szczerze - strasznie to zagmatwałeś
![]() Przede wszystkim niepotrzebnie liczysz jakiekolwiek literki ![]() Jeżeli dasz $linijki = explode("\n",iconv('ISO-8859-2', 'UTF-8',file_get_contents('pliki_txt/test.txt'))); to już masz tabelę z liniami, którą następnie wystarczy tylko explodować po "#" pustą linijkę rozpoznasz po tym że tabela wynikowa z ekslozji linijki będzie miała 1 wiersz lub sama linijka będzie pusta (jak masz to sprawdzane) ![]() Co do wydajności. Raczej się szybciej tego nie da zrobić chyba ![]() Wyrażenia regularne Ci zwróciły całą tabelę wszystkich potrzebnych pól naraz ale wydaje mi się, że byłoby to wolniejsze Reszta ok ![]() Ten post edytował Sephirus 18.10.2011, 12:15:03 -------------------- If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;) Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka... |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 381 Pomógł: 12 Dołączył: 9.07.2007 Ostrzeżenie: (0%) ![]() ![]() |
Szczerze - strasznie to zagmatwałeś ![]() Przede wszystkim niepotrzebnie liczysz jakiekolwiek literki ![]() Jeżeli dasz $linijki = explode("\n",iconv('ISO-8859-2', 'UTF-8',file_get_contents('pliki_txt/test.txt'))); to już masz tabelę z liniami, którą następnie wystarczy tylko explodować po "#" pustą linijkę rozpoznasz po tym że tabela wynikowa z ekslozji linijki będzie miała 1 wiersz lub sama linijka będzie pusta (jak masz to sprawdzane) ![]() Co do wydajności. Raczej się szybciej tego nie da zrobić chyba ![]() Wyrażenia regularne Ci zwróciły całą tabelę wszystkich potrzebnych pól naraz ale wydaje mi się, że byłoby to wolniejsze Reszta ok ![]() to jeśli wstawię $linijki = explode("\n",iconv('ISO-8859-2', 'UTF-8',file_get_contents('pliki_txt/test.txt'))); to jak wyświetlić te dane bo już się zgubiłem ![]() -------------------- GG: 564555
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 623 Pomógł: 79 Dołączył: 16.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Cytat to jeśli wstawię $linijki = explode("\n",iconv('ISO-8859-2', 'UTF-8',file_get_contents('pliki_txt/test.txt'))); to jak wyświetlić te dane bo już się zgubiłem No to zrób sobie var_dump($linijki); a zobaczysz, że masz array, i teraz:
Ten post edytował konrados 18.10.2011, 12:30:58 |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 381 Pomógł: 12 Dołączył: 9.07.2007 Ostrzeżenie: (0%) ![]() ![]() |
Hmm jak dam tak:
TO wyniki wyświetlają mi się kilka razy czyli leci od poczatku do końca i potem znowu od początku do końca i tak kilka razy...a na końcu mam błąd: Notice: Undefined offset: 1 in test.php on line 27 Notice: Undefined offset: 4 in test.php on line 28 Notice: Undefined offset: 1 in test.php on line 30 Notice: Undefined offset: 1 in test.php on line 30 ID: - Imię: - Nazwisko: - Ulica: / Linia 27 -> $ulica = explode(' ',$dane[4]); Linia 28 -> if(count($dane) == 0) break; Linia30 -> echo 'ID: '.$dane[0].' - Imię: '.$imie[1].' - Nazwisko: '.$imie[0].' - Ulica: '.$ulica[1].'<br />'; Ok z tym od początku do końca to mój błąd ... sory ;( Ale co zrobić z tymi błędami na końcu ? -------------------- GG: 564555
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 623 Pomógł: 79 Dołączył: 16.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Ok z tym od początku do końca to mój błąd ... sory ;( Ale co zrobić z tymi błędami na końcu ? Ta linijka: if(count($dane) == 0) break; odpowiada właśnie za to by przerwać gdy puste dane, wrzuć ją oczywiście wyżej, tuż po $dane=explode('#',$linia); tak jak było. Ten post edytował konrados 18.10.2011, 12:56:47 |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 381 Pomógł: 12 Dołączył: 9.07.2007 Ostrzeżenie: (0%) ![]() ![]() |
Próbowałem nim napisałem post...jednak nic to nie daje, dalej jest ten błąd.
-------------------- GG: 564555
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 623 Pomógł: 79 Dołączył: 16.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
No to popróbuj, może if(count($dane) < 4) break; no nie pamiętam jak się zachowa explode gdy w stringu nie ma podanego separatora a nie chce mi się sprawdzać.
Zrób sobie var_dump przy każdej iteracji i zobacz co ląduje w $dane w przypadku pustej linijki. Może if(strlen($linia) == 0) break; pomoże. Ten post edytował konrados 18.10.2011, 13:20:24 |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 381 Pomógł: 12 Dołączył: 9.07.2007 Ostrzeżenie: (0%) ![]() ![]() |
Extra
![]() ![]() ![]() -------------------- GG: 564555
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 623 Pomógł: 79 Dołączył: 16.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Spoko
![]() |
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 381 Pomógł: 12 Dołączył: 9.07.2007 Ostrzeżenie: (0%) ![]() ![]() |
Jeszcze teraz mi się nasunęło ... jak wyświetlić pełną ulicę w momencie gdy będzie on kilkuczłonowa ? Bo teraz robie explode i jako separator daje spacje i wyświetlam $ulica[1] bo $ulica[0] to UL. Jak zrobić by wyświetlała się ulica kilku wyrazowa ?
-------------------- GG: 564555
|
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 623 Pomógł: 79 Dołączył: 16.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
A po co robisz explode? Jeśli chodzi Ci o to, że na początku stringa jest "ul. " i chcesz się tego pozbyć, to zrób
$ulica = str_replace("UL. ", "", $dane[4]);//czyli zamieniamy "UL. " na nicość. Ten post edytował konrados 18.10.2011, 15:20:35 |
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 381 Pomógł: 12 Dołączył: 9.07.2007 Ostrzeżenie: (0%) ![]() ![]() |
OK
![]() ![]() Mam jeszcze jedno pytanie ![]() Kod Komunikat 1 # Komunikat 2 # ID#Imie Nazwsiko##ID2#UL. nazwa_ulicy ID#Imie Nazwsiko##ID2#UL. nazwa_ulicy ID#Imie Nazwsiko##ID2#UL. nazwa_ulicy ID#Imie Nazwsiko##ID2#UL. nazwa_ulicy itd Jak w takim wypadku wyświetlić najpierw komunikat 1, potem komunikat 2, a potem całą listę tak jak prędzej ? Teraz bez tych komunikatów kod php wygląda tak:
Nikt nie ma pomysłu jak to zrobić ? Ten post edytował Elber 21.10.2011, 10:50:15 -------------------- GG: 564555
|
|
|
![]()
Post
#18
|
|
![]() Grupa: Zarejestrowani Postów: 486 Pomógł: 101 Dołączył: 27.06.2010 Ostrzeżenie: (0%) ![]() ![]() |
po pierwsze, zdeklaruj pętlę tak:
a potem
oczywiście komunikat w jednej linii, ale możesz je łamać używając <br /> Ten post edytował gorden 22.10.2011, 11:20:26 |
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 25.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
po pierwsze, zdeklaruj pętlę tak: a potem
oczywiście komunikat w jednej linii, ale możesz je łamać używając <br /> Zgadza się. File nadaje sie właśnie do czegoś takiego, poniewąż od razu w tablicy mamy wiersze. Jednak na wierszach zobiłbym explode. |
|
|
![]()
Post
#20
|
|
![]() Grupa: Zarejestrowani Postów: 381 Pomógł: 12 Dołączył: 9.07.2007 Ostrzeżenie: (0%) ![]() ![]() |
Kolega @konrados napisał mi:
Cytat Po if(strlen($linia) == 0) break; spróbuj: $dane=explode('#',$linia); if(count($dane) < 2) echo 'to jest komunikat: '.$dane[0]; else { echo 'to są dane:';//tu jedź z danymi $imie = explode(' ',$dane[1]); $ulica = str_replace('UL. ', '', $dane[4]); echo $dane[0].' '.$imie[1]. ' '.$imie[0].' '.$ulica.'<br />'; } I jest OK ![]() ![]() ![]() Ten post edytował Elber 25.10.2011, 23:39:28 -------------------- GG: 564555
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 18.05.2025 - 08:37 |