daca am inteles eu bine ce vrei sa spui exista o solutie mai buna: tot fisierul pe care vrei sa-l "parsezi" (care e traducerea pe romana ?) in transformi intr-o singura linie... adica ii scoti toate \n
dupa care poti sa aplici preg_match (e mai rapid decat ereg), ereg, eregi... -- Tutu Valentin tel.: 093.566.568 web: http://www.tutu.ro/ ----- Original Message ----- From: "Mihai Ilinca" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Monday, February 11, 2002 1:27 PM Subject: [rlug] Re: php regexp > 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>)?.*?</tabl e>) > 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.
