Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> RegExp
nospor
post 12.04.2007, 13:31:26
Post #1





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Hejka, załóżmy iż mam tekst:
Cytat
PRZED<div class="aa"><div>ola<div>ss</div></div></div>ala</div>PO<div>DAAALEJ</div>

Z tego tekstu chce wyciągnąć całego diva wraz z zawartoscią, ktory ma klasę "aa", czyli cos takiego:
Cytat
<div class="aa"><div>ola<div>ss</div></div></div>ala</div>

Nie sugerujcie sie tekstem PRZED czy tez PO, gdyz to mogą byc dowolne znaki.
Kombinuje i kombinuje i nic nie moge wymyslic. Na razie mam cos takiego:
Kod
/<div class="aa">.*(<div>.*\1.*<\/div>).*<\/div>/g;

Ale niestety wyciaga mi to:
Cytat
<div class="aa"><div>ola<div>ss</div></div></div>ala</div>PO<div>DAAALEJ</div>

Pomóżcie

ps: wyrażenie te bede obsługiwal w js. tekst moze skladac sie z wielu takich divow o danej klasie i chce je wszystkie wyciągnąc
ps2: oczywiscie w tym divie moze juz nie byc innych divow, moze byc tylko sam tekst


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
devnul
post 12.04.2007, 14:08:55
Post #2





Grupa: Zarejestrowani
Postów: 1 470
Pomógł: 75
Dołączył: 21.09.2005
Skąd: że znowu

Ostrzeżenie: (0%)
-----


powinno łapać chyba bez
Kod
ala</div>
bo ta ala znajduje sie po za zamknięciem diva o który Ci chodzi


--------------------
Profesjonaliści są przewidywalni...
strzeż się amatorów...
FL4SHB4CK - imprezy, galerie, lokale
Go to the top of the page
+Quote Post
nospor
post 12.04.2007, 14:12:24
Post #3





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




sorki, pomylilem sie w stringu. powinien wygladac tak:
Cytat
PRZED<div class="aa"><div>ola<div>ss</div></div>ala</div>PO<div>DAAALEJ</div>


Problem nadal aktualny.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
sf
post 12.04.2007, 14:22:20
Post #4





Grupa: Zarejestrowani
Postów: 1 597
Pomógł: 30
Dołączył: 19.02.2003
Skąd: Tychy

Ostrzeżenie: (0%)
-----


Wg mnie się nie da. Bo na jakiej zasadzie wyrażenie regualne ma wiedzieć, który div jest końcowy? Musiałoby zliczać otwarte i zamknięte elementy, a o czymś takim nie słyszałem.


--------------------
Zapraszam na mój php blog, tworzenie stron.
Go to the top of the page
+Quote Post
devnul
post 12.04.2007, 14:25:20
Post #5





Grupa: Zarejestrowani
Postów: 1 470
Pomógł: 75
Dołączył: 21.09.2005
Skąd: że znowu

Ostrzeżenie: (0%)
-----


Kod
<div class="aa">.*?(<div>.*?(<div>.*?</div>.*?)?</div>).*?</div>


troche prowizorka - ale działa - przynajmniej z podanym przykładem tongue.gif

Ten post edytował devnul 12.04.2007, 14:29:15


--------------------
Profesjonaliści są przewidywalni...
strzeż się amatorów...
FL4SHB4CK - imprezy, galerie, lokale
Go to the top of the page
+Quote Post
nospor
post 12.04.2007, 14:32:05
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
przynajmniej z podanym przykładem
no wlasnie, to byl tylko przyklad. Dla takiego przykladu:
Cytat
PRZED<div class="aa"><div>ola<div>ss</div></div><div>przedala</div>ala</div>PO<div>DAAALEJ</div>
Juz nie zadziala sad.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
empathon
post 12.04.2007, 14:34:20
Post #7





Grupa: Zarejestrowani
Postów: 246
Pomógł: 31
Dołączył: 13.11.2006
Skąd: się znamy?

Ostrzeżenie: (0%)
-----


Hmm wykorzystując regexy w ten sposób chyba się nie da... żeby był to kod uniwersalny.
Ja bym to proponował eval'ować na tablice tylko nie mam narazie pomysłu jak się uporać z dodatkowym info w postaci treści w pregach.


--------------------
Goldenline: Łukasz Rodziewicz
Go to the top of the page
+Quote Post
devnul
post 12.04.2007, 14:35:57
Post #8





Grupa: Zarejestrowani
Postów: 1 470
Pomógł: 75
Dołączył: 21.09.2005
Skąd: że znowu

Ostrzeżenie: (0%)
-----


Kod
<div class="aa">.*?(<div>.*?(<div>.*?</div>.*?)*</div>.*?)*</div>
ale to już tak (z poprzednim tez dziala;) ) ;]

@empathon: jak xmla parsowac mozna - ale to wymaga stricte czystego kodu - bez zupy

Ten post edytował devnul 12.04.2007, 14:38:51


--------------------
Profesjonaliści są przewidywalni...
strzeż się amatorów...
FL4SHB4CK - imprezy, galerie, lokale
Go to the top of the page
+Quote Post
nospor
post 12.04.2007, 14:43:31
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
ale to już tak (z poprzednim tez dziala;) ) ;]
hehe, no tak, ale jak mowilem te divy moga sie zagniezdzac dowolnie gleboko, czyli np. tak:
Cytat
PRZED<div class="aa"><div>ola<div>ss <div>xxxx</div> </div></div><div>przedala</div>ala</div>PO<div>DAAALEJ</div>


Dlatego kombinowalem tak:
Cytat
<div class="aa">.*?(<div>.*?\1.*?<\/div>)*.*?<\/div>
z ta \1 myslac ze lyknie zagniezdzanie, ale cos nie lyka


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
devnul
post 12.04.2007, 14:54:07
Post #10





Grupa: Zarejestrowani
Postów: 1 470
Pomógł: 75
Dołączył: 21.09.2005
Skąd: że znowu

Ostrzeżenie: (0%)
-----


nie łyka bo za \1 wstawia to co znalazł(by) w pierwszym wyrazie czyli zagłębien musialoby byc nieskonczenie wiele

a jest opcja żeby zrobić to troche inaczje? czy musi być jedno wyrażenie regularne?

Ten post edytował devnul 12.04.2007, 15:00:28


--------------------
Profesjonaliści są przewidywalni...
strzeż się amatorów...
FL4SHB4CK - imprezy, galerie, lokale
Go to the top of the page
+Quote Post
nospor
post 12.04.2007, 15:05:19
Post #11





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
a jest opcja żeby zrobić to troche inaczje? czy musi być jedno wyrażenie regularne?
Moze byc inaczej, byleby mi tylko lyknelo wszystkie takie divy. Bo ja tu w przykladzie pokazalem tylko takiego jednego zamoteanego, ale ich moze byc wiecej smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
siemakuba
post 12.04.2007, 15:36:01
Post #12





Grupa: Przyjaciele php.pl
Postów: 1 112
Pomógł: 20
Dołączył: 10.04.2005

Ostrzeżenie: (0%)
-----


A czy dopuszczalna jest droga na skróty? - jQuery

Kod
var e = $('div.aa').html();
console.debug(e);


pozdr.
Go to the top of the page
+Quote Post
nospor
post 12.04.2007, 15:43:54
Post #13





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@siemakuba no popatrz, rozwiązanie mialem przed oczami smile.gif Wszakze z jquery nie bede korzystal, ale fakt ze moge to na DOMObject zamienic bardzo mnie urządza biggrin.gif
dzieki za myśl


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Cudi
post 12.04.2007, 16:03:37
Post #14


Administrator planeta/IRC


Grupa: Przyjaciele php.pl
Postów: 385
Pomógł: 0
Dołączył: 19.04.2003
Skąd: Zabrze

Ostrzeżenie: (0%)
-----


Do takich rzeczy został stworzony XPath winksmiley.jpg

Kod
//div[@class='aa']

i pozamiatane winksmiley.jpg


--------------------
"Programmers are in a race with the Universe to create bigger and better idiot-proof programs, while the Universe is trying to create bigger and better idiots. So far the Universe is winning."
Cudi's devBlog
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 20.07.2025 - 10:28