![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 16.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam wszystkich,
mam tekst który wygląda tak: START coś1 STOP START coś2STOP START c o ś3 STOP czyli mam początek i koniec powtarzającego się tekstu. Między nimi jest różna ilość linijek. Chodzi mi o to żeby w tablicy $array znajdowały się poszczególne elementy: coś1 coś2 c o ś3 Jestem już bezradny bo preg_match_all wyszukuje od pierwszego START do ostatniego STOP ![]() Może mi ktoś napisać jak to zrobić? Z góry dzięki. Pozdrawiam, rycy |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 155 Pomógł: 9 Dołączył: 26.01.2004 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
po pierwsze przeczytaj sobie tutorial na temat wyrażeń regularnych( zapytaj google o regexp).
jeżeli masz start i stop to sprawa jest bardzo prosta. ja bym najpierw podzielił całość po "\n" (znak końca linii) a następnie poruszał się po tablicy i szukał wzorca. -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 16.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
po pierwsze przeczytaj sobie tutorial na temat wyrażeń regularnych( zapytaj google o regexp). jeżeli masz start i stop to sprawa jest bardzo prosta. ja bym najpierw podzielił całość po "\n" (znak końca linii) a następnie poruszał się po tablicy i szukał wzorca. myślałem o czymś takim: Kod preg_split ("|START(.*)STOP|s", $input_string) ale to chyba też zaczyna od pierwszego START i wyszuka do ostatniego STOP;/ nie ma jakiegoś prostszego sposobu? niestety tego tekstu w ogóle nie mogę edytować;/ |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 115 Pomógł: 12 Dołączył: 11.01.2005 Skąd: Zduńska Wola Ostrzeżenie: (0%) ![]() ![]() |
Sorry, ale wydaje mi się, że da się bez wyrażen regularnych:
Pisane z palca, więc może być jakiś błąd... EDIT: Oczywiście w zmiennej $parsed masz tablicę z liniami, czyli chyba to, o co chodziło... Ten post edytował Virti 17.07.2008, 21:38:18 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 233 Pomógł: 9 Dołączył: 3.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
bo wyrażenia regularne są zachłanne! zamiast .* wpisz .*? i użyj preg_match_all
Ten post edytował zimi 17.07.2008, 21:41:30 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 115 Pomógł: 12 Dołączył: 11.01.2005 Skąd: Zduńska Wola Ostrzeżenie: (0%) ![]() ![]() |
Wyrzuca: Kod array(5) { [0]=> string(8) " coś1 " [1]=> string(7) " coś2 " [2]=> string(3) " c " [3]=> string(2) "o " [4]=> string(4) "ś3 " } Nie o to chodziło? ![]() Pozdrawiam. EDIT: Dla ładniejszych wyników dodaj jeszcze f-cję trim(); Ten post edytował Virti 17.07.2008, 21:45:16 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 16.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
no niestety wyniki w ogóle się rozjeżdżają;/
nie da się tego jakoś inaczej? |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 115 Pomógł: 12 Dołączył: 11.01.2005 Skąd: Zduńska Wola Ostrzeżenie: (0%) ![]() ![]() |
rozjeżdżają, tzn?
zamień
na:
Ten post edytował Virti 17.07.2008, 21:49:12 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 16.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
wpisałem coś takiego:
Kod $result = explode("\n", $result); $parsed = array(); foreach($result as $line) { $parsed[] = trim(str_replace(array("<font style='font-size: 11px'>", "<img src='http://domain.pl/10541/gfx/spacer.gif' width=1 height=1></td>"), null, $line)); } echo $parsed[0]; i niestety nic - nie wiem, może źle to wyświetlam? |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 115 Pomógł: 12 Dołączył: 11.01.2005 Skąd: Zduńska Wola Ostrzeżenie: (0%) ![]() ![]() |
sprawdź, czy var_dump($parsed); coś wyświetli, być może, że akurat przy "zerze" nic nie było...
a najlepiej daj jeszcze var_dump($result); |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 233 Pomógł: 9 Dołączył: 3.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
@rycy85: Jakich wyników oczekujesz?
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 28 Pomógł: 3 Dołączył: 23.01.2007 Skąd: Dys/Lublin Ostrzeżenie: (0%) ![]() ![]() |
bo wyrażenia regularne są zachłanne! zamiast .* wpisz .*? i użyj preg_match_all Słusznie mówisz, ale trzeba kod zapodać:)
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 233 Pomógł: 9 Dołączył: 3.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
OT:
Cytat Słusznie mówisz, ale trzeba kod zapodać:) Nie załamuj mnie znak zapytania chyba każdy potrafi dodać... |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 16.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
sprawdź, czy var_dump($parsed); coś wyświetli, być może, że akurat przy "zerze" nic nie było... a najlepiej daj jeszcze var_dump($result); var_dump($parsed) wyświetla to samo co var_dump($result) czyli całą tekst w tablicy podzielony na linijki. natomiast $parsed[nr_linijki] wyświetla zawartość tej linijki. Czy tu jest wzięte pod uwagę że START i STOP są w różnych linijkach? przez wyrażenia regularne jakoś by tego nie dało się zrobić? Może wiesz jaki trzeba warunek postawić w wyrażeniu aby szukał do najbliższego STOP? cholera nie zauważyłem pierwszego postu zimiego tak to działa .*? zamiast .* sorka - gdzieś mi umknął ten post jak sprawdzałem metodę z str_replace dzięki za pomoc |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 12.07.2025 - 12:36 |