On Mon, Feb 11, 2002 at 12:22:30PM +0200, Razvan Cosma wrote:
> Incerc sa scot dintr-un html numai ce este inclus intre un tag (eg
> <table>) si cel care il inchide. Se presupune ca sint mai multe asemenea
> taguri imbricate, iar cel care inchide blocul nu este ultimul din sir.
> Cum ar arata asa ceva? Pe cit posibil in php (incerc sa pun asta intr-o
> pagina web), daca nu in orice limba si o sa incerc sa adaptez. Cea mai
> buna sugestie ar fi cred RTFM, dar la care pagina?
> Multumesc.
In general functiile de findall/searchall/matchall gasesc aparitiile
non-overlapping ale expresiei regulate in string (care nu se incaleca),
or la tine se incaleca. Cred ca va trebui sa faci multe manarii ca sa-ti
iasa, cu o singura cautare nu vad cum ar merge, nu vad 'o expresie
regulata' care sa faca ce vrei tu din prima...
Idee: Eventual sa incerci sa-ti generezi expressile regulate dinamic in
felul urmator. Iti iei o adancime_maxima (de cate ori se nestuiesc alea
unele in altele) si:
rezultate=array ()
x=array (stringu_tau)
for (i=adancime_maxima-1 dowto 0)
{
str1='(?:<table>.*?
str2='.*?</table>)?'
str_compus=(str1 concat cu el insusi de i ori) concat cu (str2 concat cu el insusi de
i ori)
ereg='(<table>.*?' concat cu str_compus concat cu '.*?</table>)'
# exemplu: i=2 ai
(<table>.*?(?:<table>.*?(?:<table>.*?.*?</table>)?.*?</table>)?.*?</table>)
y=array ()
foreach (x as a)
{
y.append (matchall (ereg, a))
}
x=y
rezultate se extinde cu x
}
in variabila rezultate ai rzultatele finale
Ideea e ca la prima iteratie le iei pe alea de suprafata (de grad 1), la
a 2-a, le parsuiesti pe alea pe care le-ai gasit la prima, obtinandul-le
pe alea de suprafata relativ la primele care relativ la stringu mare
sunt de grad 2, si tot asa...
Note: E o idee de moment si s-ar putea sa fie total gresita.
Daca nu stii de loc expresii regulate, atunci o sa intelegi mai greu,
incearca cu manualu in fata...
>
>
>
>
>
> ---
> Send e-mail to '[EMAIL PROTECTED]' with 'unsubscribe rlug' to
> unsubscribe from this list.
-Mihai
---
http://www.muqker.com
---
Send e-mail to '[EMAIL PROTECTED]' with 'unsubscribe rlug' to
unsubscribe from this list.