[PHP] Pregi Help

Odpowiedz Nowy wątek
2006-08-27 12:17
0

Hey

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

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.


Pozostało 580 znaków

2006-08-27 12:28
0
<test>(.*?)</test> ??
Dwie zasady gwarantujące sukces:
1. Nigdy nie mów nikomu wszystkiego<span style="color: white">

Pozostało 580 znaków

2006-08-27 12:32
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


Pozostało 580 znaków

2006-08-27 13:01
nav
0

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


utf-8 rlz! ٩(ಥ_ಥ)۶

Pozostało 580 znaków

2006-08-27 13:16
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?

Pozostało 580 znaków

2006-08-27 13:45
0

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


Dwie zasady gwarantujące sukces:
1. Nigdy nie mów nikomu wszystkiego<span style="color: white">

Pozostało 580 znaków

2006-08-27 13:47
nav
0

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


utf-8 rlz! ٩(ಥ_ಥ)۶

Pozostało 580 znaków

2006-08-27 14:09
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


Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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