Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyrażenie PERL
Forum PHP.pl > Forum > Przedszkole
Krzychur
Witam!
Mam mały problem z wyrażeniem PERL:

Kod
<!-- BEGIN loop -->.*?(<!-- IF\:empty -->(.*?)<!-- ENDIF\:empty -->)?.*?<!-- END loop -->


Chciałbym, aby znalazło ono w podmiocie np.:
Kod
<!-- BEGIN loop -->
loop {id.loop}
<!-- IF:empty -->brak iteracji<!-- ENDIF:empty -->
<!-- END loop -->


wyłapało wartości:
1 => "<!-- IF:empty -->brak iteracji<!-- ENDIF: empty -->"
2 => "brak iteracji"

a w podmiocie

Kod
<!-- BEGIN loop -->
loop {id.loop}
<!-- END loop -->


1 => ""
2 => ""

Niestety tak się nie dzieje. Program Regular Expression Editor w wersji 1.2.0 wyświetla błąd: Uninitialized string offset: 1.

Błąd znika, jeżeli umieszcze ciągi znaków ".*?" w nawiasach zwykłych np.:
Kod
<!-- BEGIN loop -->(.*?)(<!-- IF\:empty -->(.*?)<!-- ENDIF\:empty -->)?(.*?)<!-- END loop -->


ale wtedy zostają zwrócone takie wartości:
1 => ""
2 => ""
3 => ""
4 => "loop {id.loop}<!-- IF:empty -->brak iteracji<!-- ENDIF:empty -->"

Moze ktoś mi pomóc rozwiązać ten problem?
Radarek
Cytat
Chciałbym, aby znalazło ono w podmiocie np.:
<!-- BEGIN loop -->
loop {id.loop}
<!-- IF:empty -->brak iteracji<!-- ENDIF:empty -->
<!-- END loop -->

Cytat
a w podmiocie
<!-- BEGIN loop -->
loop {id.loop}
<!-- IF:empty -->brak iteracji<!-- ENDIF:empty -->
<!-- END loop -->


Czym sie to rozni? smile.gif
Guest
Asz choroba, zapomniałem usunąć tego - szybkie kopiowanie i myślenie o rozwiązaniu jednocześnie. Powinno być w tym drugim kodzie:
Kod
<!-- BEGIN loop -->
loop {id.loop}
<!-- END loop -->
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.