![]() |
![]() |
![]() ![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 182 Pomógł: 0 Dołączył: 20.03.2007 Skąd: Kruklanki/Otwock Ostrzeżenie: (0%) ![]() ![]() |
Cześć
![]() Słuchajcie, mam taki problem: Mam plik txt o zawartości (to tylko fragment):
muszę mieć docelowo w pliku txt wg takiego wzoru:
I teraz co robię: 1. zrobiłem upload pliku na serwer (ma być wczytywany przez formularz) i nadaję mu taką samą nazwę - zawsze jest napisywany - nie ma znaczenia, chodzi o to, że tylko raz był przerobiony i tyle 2. za pomocą explode robię tablicę wg znaku ";" I wiecej - nie potrafię :| Powinno jeszcze łamać linię (< br/> czy <p>) w miejscach zaznaczonych poniżej: OPEL ASTRA G coupe (F07_) (tu) 2.0 16V Turbo (2000.09 - 2001.08); (tu i usuwać () ) 1998.00 ccm - 190.00 KM/ (tu) 140.00 kW; (tu) Silnik: Z 20 LET Proszę - pomóżcie mi znaleźć rozwiązanie. Nie wiem czy można dać kilka różnych znaków do explode - żeby wycinało np wg : i ) i jak to zapisać z powrotem do pliku txt, żeby łamanie linii było w tych miejscach. Coś czytałem o /n bodajże . Będę naprawdę bardzo mocno wdzięczny ![]() ![]() Z góry dzięki _______________________ To co do tej pory wypociłem ![]()
Ten post edytował BatGraf 27.02.2011, 00:47:49 -------------------- _____________________________________________________
Pierwszy Tutorial - :) Drugi tutorial :) Trzeci tutorial :) A wszystkie trzy - jak usmiechnąć się do siebie :) |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
chyba bedzięsz wiedzial jak to przełożyć na swój przykład Ten post edytował CuteOne 27.02.2011, 05:20:58 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 107 Pomógł: 30 Dołączył: 19.02.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Poczytaj sobie o funkcji preg_split:
http://pl.php.net/manual/pl/function.preg-split.php Pierwszym argumentem - "nożem tnącym drugi argument" - jest wyrażenie regułowe. Wyrażenie regułowe (string) możesz zbudować tak, aby zawierało kilka wariantów: /[xyz]/ - dowolny ze znaków w nawiasach, w Twoim przypadku chodzi o dwukropek i nawias, a więc: /[:)]/ Inny sposób (jeżeli nie boisz się bardziej zaawansowanych wyrażeń regułowych): Użyj funkcji preg_match, w takim układzie: 1. W wyrażeniu regułowym trzeba zdefiniować subwzorce (przechwytujące wskazane fragmenty argumentu 2). 2. Cały tekst pokryty wzorcem, a także jego fragmenty pokryte kolejnymi subwzorcami są wstawiane do tablicy - 3-go argumentu preg_match. 3. Wtedy masz dostęp "prostym strzałem" do wskazanych fragmentów wiersza z pliku. |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 182 Pomógł: 0 Dołączył: 20.03.2007 Skąd: Kruklanki/Otwock Ostrzeżenie: (0%) ![]() ![]() |
Panowie - dzięki, chyba to mi juz pomoże, głównie preg_split. Teraz potestuję i powiem jak mi wyszło
![]() Dzięki _________ Ok, to pierwsza problema ![]() Zrobiłem tak:
i wywala błąd przez uzycie "/" a wg tego tez chciałbym stosować. Można zastosować i preg_split i explode? Jakos razem, jednocześnie? Ten post edytował BatGraf 28.02.2011, 00:48:37 -------------------- _____________________________________________________
Pierwszy Tutorial - :) Drugi tutorial :) Trzeci tutorial :) A wszystkie trzy - jak usmiechnąć się do siebie :) |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 107 Pomógł: 30 Dołączył: 19.02.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Pierwsza sugestia:
Zamiast czytać cały plik do stringu, lepiej użyj funkcji file($fn). Jej wynikiem jest tablica z kolejnymi wierszami. Dopiero kolejne wiersze pliku (kolejne elementy tej tablicy) przetwarzaj preg_split'em. Uwaga: Jeżeli plik jest duży, to zamiast wczytania wszystkiego "jednym ruchem" przez file(...) lepiej otwórz plik (fopen(...)), a potem w pętli czytaj wiersz po wierszu (fgets(...)) i od razu przetwarzaj. Co do: $keywords = preg_split("/;//", $plik1); Błąd polega na tym, że po średniku dałeś dwa "/". Pierwszy - to ogranicznik końca wzorca (OK), ale drugi - to już nadmiar, więc preg_split "zaprotestował". Kolejna uwaga - to wyrażenie regułowe do tego przypadku. Skoro masz tu wszystkie wiersze w jednym stringu, to najpierw musisz "pociąć" go na poszczególne wiersze, a więc "wyrażeniem tnącym" powinien być '\n'. Tylko po co taka gimnastyka, skoro tablicę z kolejnymi wierszami daje Ci file(...)? I na koniec: trim(...) stosuj indywidualnie do kolejnych wierszy, a nie do całej treści z pliku. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 07:59 |