Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wyrażenie regularne
Forum PHP.pl > Forum > Przedszkole
arzach
Mam taki ciąg

Kod
<DISTANCE:6>476.96 <BAND:3>80M <CALL:6>SP3JNV <COMMENT:8>SP8PRL/8 <CONT:2>EU <EOR>


i jak napisać wyrażenie regularne by wyciągnąć wartość call
Obecnie mam taki kod
  1. preg_match_all("/<CALL:[0-9]+>(.*)</", $dane[$i], $new_array[$i]['band'], PREG_PATTERN_ORDER);


Działa ale nie do końca ponieważ wyciąga wszystko od <CALL:6> do końca wystąpienia < czyli

Kod
SP3JNV <COMMENT:8>SP8PRL/8 <CONT:2>EU <


A potrzebuje do pierwszego wystąpienia znaku < po (.*)

Mam nadzieje ze rozumiecie i ktoś będzie w stanie mi pomóc .
mortus
Może tak:
  1. preg_match_all("/<CALL:[0-9]+>(.*?)\040</", $dane[$i], $new_array[$i]['band'], PREG_PATTERN_ORDER);

Powinno wyciągnąć to co chcesz, nawet bez spacji.

EDIT:
Chyba, że to nie spacja, to wtedy:
  1. preg_match_all("/<CALL:[0-9]+>(.*?)\s</", $dane[$i], $new_array[$i]['band'], PREG_PATTERN_ORDER);
arzach
Żadne z powyżej podanych sposobów nie działa. Ktoś ma jeszcze jakiś pomysł ?



mortus
Na pewno któryś ze wzorców podanych przeze mnie działa, z tym, że oczekiwany rezultat powinieneś mieć w zmiennej $new_array[$i]['band'][1][0] (gdzie $i to oczywiście konkretna wartość), bo tak działa funkcja preg_match_all().
arzach
Przecież mówię ze nie działa plik ma parę tysięcy wierszy
Kod
<DISTANCE:6>288.28 <BAND:3>80M <CALL:8>SP9HTY/9 <CONT:2>EU <CQZ:2>15  

<DISTANCE:6>237.05 <BAND:3>80M <CALL:8>SP6JQF/7 <CONT:2>EU <CQZ:2>15

<DISTANCE:6>288.28 <BAND:3>80M <CALL:8>SP9HTY/9 <CONT:2>EU <CQZ:2>15  

<DISTANCE:6>237.05 <BAND:3>80M <CALL:8>SP6JQF/7 <CONT:2>EU <CQZ:2>15

<DISTANCE:6>288.28 <BAND:3>80M <CALL:8>SP9HTY/9 <CONT:2>EU <CQZ:2>15  

<DISTANCE:6>237.05 <BAND:3>80M <CALL:8>SP6JQF/7 <CONT:2>EU <CQZ:2>15


I wyrażenie
  1. preg_match_all("/<CALL:[0-9]+>(.*?)\040</", $dane[$i], $new_array[$i]['call'], PREG_PATTERN_ORDER);


Działa prawie dobrze ale czasami zdarza się ze doda
Kod
SP9HTY/9 <CONT:2>EU <CQZ:2>15 <DXCC:3>269 <FREQ:8>3.703000 <
Piogola
Kod
#<CALL:[^>]+>([^ ]+) <#
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.