Witam,

mam plik z powtarzającymi się danymi sekwencyjnie. Każdy rekord w sekwencji znajduje się między konkretnymi znacznikami, dzięki czemu wyciągam te rokordy za pomocą wyrażeń regularnych.

przykład danych w pliku:


%START
%%dane1%% jakiś opis
%%dane2%% opis pola 2
%%dane3%% trele morele
%KONIEC
%START
%%dane1%% inny opis pola1
%%dane2%% inny opis pola 2
%%dane3%% trele morele 2
%KONIEC

... itd.


stworzyłem sobie pętle i analizuję każdy z rekordów indywidualnie:

  1. for($x = 1, $n = $ile_platnosci; $x <= $n; $x++) {
  2.  
  3. echo "<br><div align=center> ******** POCZĄTEK SEKWENCJI NR ".$x." *************</div></br>";
  4. preg_match_all("/%%dane1%%(.*?)%%dane([0-9]{1})%%/is", $pobrany_plik, $dane1);
  5. $dane1 = preg_replace('/%%dane([0-9]{1})%%:/is', '', $dane1[0]); //usuwam znak znacznika z 1 ciagu
  6.  
  7. echo "<span class=opis>".$dane1[$x-1]."</span>"; //wyswietlam wynik
  8.  
  9. // itd. pozostale pola
  10. }


czasem niestety zdarza sie, że w danej sekwencji brakuje jakiegos ciągu, np
calej lini:
%%dane2%% opis pola 2

wówczas np zamiast Array ( [0] => opis pola 2, [1] => inny opis pola 2)

dostaje: Array ( [0] => [0] => inny opis pola 2)
co w konsekwencji daje to, że część danych z sekwencji 1 (pomiędzy %START a %KONIEC) przechodzi wyżej, w wolne miesce.

Jak w takim razie zrobić, by w przypadku braku konkretnej linii w danej sekwencji, uzyskac poprawny
ciag: Array ( [0] => puste , [1] => inny opis pola 2) zamisat Array ( [0] => [0] => inny opis pola 2)

lub może jak zabrać sie za wyświetlanie danych w petli tak by miało to ręce i nogi ?

dzięki za pomoc.
PW