[PHP] Pregi Help

0

Hey

Przykład:
$text='<a AAA>BBBB<test>CCC</test></a>';
$text='<a AAA>BBBB<test2>CCC</test2></a>';

jak zrobić aby wyciągnać dane CCC ?

robie parser-a w stylu : "#<a...>([^>]*)</a>#"
robie tak że w anchorze ma nie być znaku ">", ale jak wiadomo często sie zdarzają np. </b>

moje pytanie - jak zrobić by zaprzeczyć nie znak a całe wyrażenie cosw stylu : "[^<test>]*"

pozdr.

0

<test>(.*?)</test> ??

0

nie, chodiz mi o co innego.

Chce pobrać fragment objętnie jakeigo textu w którym nie ma wyrażenia "<test>" lub "</test>"

Np.

$site='TEST1TEST2</tr>BEZTEGO</tr></tr>';

preg_match_all('#([^×]+)([BEZTEGO]{0})</tr>#', $site,$res);

Jak pobrać z $site dane"TEST1TEST2</tr>" ?

Użyłem tutaj też "([^×]+)" , ponieważ jak robie (.*) to nie uznaje mi enterów

0

((?!</?test>).)*

0

ok, dzięki, zaprzeczenie działa

tylko mam prblem z enterem

$site='TES1TEST2</tr></tr>';

$site2='
T
E
S

TEST2</tr></tr>';

Parser:
preg_match_all('#((?!class="yyy").)((?!class="yyy").)</tr>#', $site, $res);

działa dla $site ale dla $site2, który ma entery nie. Co trzeba dodać w miejscy "((?!class="yyy").)*"

Ok, zrobiłem tak:
preg_match_all('#((?!class="yyy")[°])((?!class="yyy")[°])</tr>#', $site, $res);

Tylko teraz kolejna rzecz :(. Pola w nawiasach jak maja wiecej niz 1000 znaków to juz nie znajduje.

chyba będzie lepiej jak napisze własnego parsera na strpos i substr...

jest może strpos na preg-u? do znajdywania samej pozycji?

0

a nie wystarczy dać flagę "s" (na końcu po "#") żeby nowe linie nie sprawiały problemów ?

0

wystarczy :> s - "dot matches new line".

0

ok, wszystko działa tlyko jeszce jeden problem z długością wyszukiwanych fraz

mam teraz takiego parsera:
preg_match_all('#((?!class="yyy").)*(.)*class="yyy"#si', $site, $res);

długa tresc - ponad 2000 znaków

jak jest długa treśc to nie znajduje ((?!class="yyy").){0,9999} tak pisze że max może być 1550

hmmm

1 użytkowników online, w tym zalogowanych: 0, gości: 1