Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] - Fragment od $zmiennej do..
pieto
post
Post #1





Grupa: Zarejestrowani
Postów: 227
Pomógł: 1
Dołączył: 12.05.2002
Skąd: gdańsk

Ostrzeżenie: (0%)
-----


Witam
Jak mogę dostać fragment zminnej $plik_txt od momentu napotkania $model do napotkania pustej lini jeden enter lub wiecej

kombinuje i zachooelre nie wychodzi
napisalem tak:
  1. <?php
  2. $tmp_model = preg_replace("#(.*?)$model(.*?)n(.*?)nn#e", '"$2"."n"' , $plik_txt);
  3. ?>

ale nie lyka

lub
  1. <?php
  2. $tmp_model = substr($plik_txt,strpos($plik_txt,$model),strpos($plik_txt,"nn"));
  3. ?>


i tez nie lyka


--------------------
Materiały i Wypracowania znajdziesz na zgapa.pl i
Encyklopedii Zgapedia
Jedyny przedawkowany portal motoryzacyjny to autoholik.pl
Go to the top of the page
+Quote Post
Kicok
post
Post #2





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

Ostrzeżenie: (0%)
-----


Nie działa ponieważ:
  1. <?php
  2. strpos($plik_txt,"nn")
  3. ?>

1. funkcja ta znajduje ci "pierwszą pustą linię w pliku", a nie "pierwszą pustą linię za $model"
2. trzecim parametrem funkcji substr() (jeśli jest dodatni) jest ilość znaków do wycięcia, a nie pozycja ostatniego znaku do wycięcia.

Poczytaj o strpos" title="Zobacz w manualu PHP" target="_manual i substr" title="Zobacz w manualu PHP" target="_manual i przeanalizuj ten kod:
  1. <?php
  2.  
  3. $model_pos = strpos($plik_txt, $model);
  4. if($model_pos === false) {
  5. //nie znaleziono $model w pliku
  6. }
  7. else
  8. {
  9. $nl_pos = strpos($plik_txt, PHP_EOL.PHP_EOL, $model_pos);
  10. $ilosc_znakow = ($nl_pos - $model_pos);
  11.  
  12. $tmp_model = substr($plik_txt, $model_pos, $ilosc_znakow);
  13. }
  14.  
  15. ?>


--------------------
"Sumienie mam czyste, bo nieużywane."
Go to the top of the page
+Quote Post
bendi
post
Post #3





Grupa: Zarejestrowani
Postów: 401
Pomógł: 5
Dołączył: 14.09.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


http://forum.webhelp.pl/viewtopic.php?p=776283


--------------------
Go to the top of the page
+Quote Post
pieto
post
Post #4





Grupa: Zarejestrowani
Postów: 227
Pomógł: 1
Dołączył: 12.05.2002
Skąd: gdańsk

Ostrzeżenie: (0%)
-----


Dzieki, teraz jasne winksmiley.jpg
ale nie kumam teraz dlaczego w $nl_pos nie mam nic a tym samym niepotrafi wyciagnac odpowiedniego fragmenu (do przerwy).

Jak sie domysla PHP_EOL = End Of Line ?
z gory dzieki


z tego co zauwazylem problem pojawia w kazdym przypaku dla zmiennej zczytanej z pliku formatu windowsowego - koniec lini CRLF, dziala z pliku w formacie unixowego (LF )


--------------------
Materiały i Wypracowania znajdziesz na zgapa.pl i
Encyklopedii Zgapedia
Jedyny przedawkowany portal motoryzacyjny to autoholik.pl
Go to the top of the page
+Quote Post
Kicok
post
Post #5





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

Ostrzeżenie: (0%)
-----


Ehh, z przyzwyczajenia napisałem PHP_EOL. Jest to stała, która na systemach Windowsowskich przyjmuje wartość "\r\n" a na Unixowskich: "\n".

Żeby było zgodne z wszystkimi plikami zamień:
Kod
PHP_EOL.PHP_EOL

na:
Kod
"\n\n"


a zaraz po wczytaniu danych z pliku dodaj jeszcze:
  1. <?php
  2. $plik_txt = str_replace("rn", "n", $plik_txt);
  3. ?>


--------------------
"Sumienie mam czyste, bo nieużywane."
Go to the top of the page
+Quote Post
pieto
post
Post #6





Grupa: Zarejestrowani
Postów: 227
Pomógł: 1
Dołączył: 12.05.2002
Skąd: gdańsk

Ostrzeżenie: (0%)
-----


ech upierdliwy jestem wiem,
w zasadzie poradzilem sobie wycinajac znak \r i dziala spoko, teraz mam problem z przerobieniem aby wyciagal mi kazdy taki napotkany fragement , zalezy mi aby nie wykonywal tego w funkcji rekurencyjnej a moze w petli ?

bede naprawde wdzieczny za pomoc, bo kod prosty a troche mnie juz rozbraja...

Ten post edytował pieto 21.03.2007, 16:18:36


--------------------
Materiały i Wypracowania znajdziesz na zgapa.pl i
Encyklopedii Zgapedia
Jedyny przedawkowany portal motoryzacyjny to autoholik.pl
Go to the top of the page
+Quote Post
bendi
post
Post #7





Grupa: Zarejestrowani
Postów: 401
Pomógł: 5
Dołączył: 14.09.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


preg_match_all" title="Zobacz w manualu PHP" target="_manual


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 05:27