Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript] Problem z wyrażeniem regularnym, pobranie wszystkich <h1> z tekstu
pgrzelka
post
Post #1





Grupa: Zarejestrowani
Postów: 313
Pomógł: 24
Dołączył: 9.08.2008
Skąd: Kielce

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


Witam

mam jakiś tam tekst html zapisany w zmiennej
Kod
tekst = "to jest tekst html <h1>naglowek</h1> tekst tekst <h1>tekst<br></h1> dalszy tekst"

chciałbym pobrać z takiego tekstu wszystkie h1 h2 h3
mam taki kod
Kod
var matches = tekst.match(/<h[^<]+>[^>]*[<br>]*<\/\h.>/g);


niestety nie interpretuje mi on <br> w <h1>

proszę o pomoc

podbijam, na prawdę nikt nie wie ?
Go to the top of the page
+Quote Post
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




PHPQUERY
Go to the top of the page
+Quote Post
pgrzelka
post
Post #3





Grupa: Zarejestrowani
Postów: 313
Pomógł: 24
Dołączył: 9.08.2008
Skąd: Kielce

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


@wookieb: dzięki ale mi chodzi o rozwiązanie w JavaScirpt, faktycznie zapomniałem napisać o tym w poście ale temat jest w dziale JavaScript i moje pytanie dotyczy tego języka,
Go to the top of the page
+Quote Post
wookieb
post
Post #4





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Ee tam. To moj glupota, że jak widze regexp to zawsze myslę, że chodzi o php.
getElementsByTagName

Ten post edytował wookieb 25.10.2010, 10:07:12
Go to the top of the page
+Quote Post
zegarek84
post
Post #5





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


Cytat(pgrzelka @ 25.10.2010, 09:41:15 ) *
mam jakiś tam tekst html zapisany w zmiennej
Cytat(wookieb @ 25.10.2010, 11:06:43 ) *
Ee tam. To moj glupota, że jak widze regexp to zawsze myslę, że chodzi o php.
getElementsByTagName
w zmiennej a nie w drzewie DOM (IMG:style_emoticons/default/winksmiley.jpg)

w nawiasach kwadratowych definiuje się zestaw znaków dozwolonych a nie grupuje się ciągu tekstowego (IMG:style_emoticons/default/winksmiley.jpg) - więc Ty potrzebujesz coś w stylu:
/<h[^<]+>[^>]*(<br>)*<\/\h.>/g

a jeszcze lepiej:
/<h[^<]+>[^>]*(?:<br>)*<\/\h.>/g

a o ile tego br ma być 0 lub 1 to:
/<h[^<]+>[^>]*(?:<br>)?<\/\h.>/g

gdzie znak zapytania znaczy tyle co {0,1}...

poczytaj o grupowaniu wyrażeń regularnych + różnica między (wyrażenie) a (?:wyrażenie) to w pierwszym przypadku dopasowanie masz przechowywane w zmiennej/tablicy a w drugim przypadku nie...
Go to the top of the page
+Quote Post
flashdev
post
Post #6





Grupa: Zarejestrowani
Postów: 812
Pomógł: 117
Dołączył: 2.12.2008

Ostrzeżenie: (10%)
X----


Cytat(zegarek84 @ 25.10.2010, 12:20:27 ) *
w zmiennej a nie w drzewie DOM (IMG:style_emoticons/default/winksmiley.jpg)
[...]


Nie wiem, czy autorowi tematu przypadnie takie rozwiązanie do gustu, ale można tymczasowo taki string podpiąć do drzewa DOM, tylko po to żeby wygodnie odwołać się do jego elementów składowych.
Go to the top of the page
+Quote Post
wookieb
post
Post #7





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Cytat(zegarek84 @ 25.10.2010, 12:20:27 ) *
w zmiennej a nie w drzewie DOM (IMG:style_emoticons/default/winksmiley.jpg)

Z DOM-a wyciągnie sobie wszystko, więc co bawić się wyrażeniami skoro jest do tego inne LEPSZE narzędze?
Go to the top of the page
+Quote Post
pgrzelka
post
Post #8





Grupa: Zarejestrowani
Postów: 313
Pomógł: 24
Dołączył: 9.08.2008
Skąd: Kielce

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


@zegarek84: Twoje wyrażenia nie działają na moim przykładowym tekście,
Kod
... matki i żony Edypa.</p><h1>tresc<br> antygony</h1><p>rozpoczyna się w momencie ...


używam drzewka dom za pomocą jquery
Kod
$('div').find('h1,h2,h3')


dziękuje wszystkim za pomoc
Go to the top of the page
+Quote Post
zegarek84
post
Post #9





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


Cytat(pgrzelka @ 25.10.2010, 13:51:43 ) *
@zegarek84: Twoje wyrażenia nie działają na moim przykładowym tekście
że niby jakie?? - nie prosiłeś o gotowca a pytałeś się gdzie jest problem - więc problem opisałem dosyć dokładnie... jeśli nie chcesz się uczyć to już nie mój problem - na zdania jakie wyżej podałeś pisałem gdzie problem i wystarczyło deczko pomyśleć by mieć uniwersalne rozwiązanie...

jeśli szukasz gotowców to tutaj uzyskasz tablicę array lub null z dopasowanych wyrażeń i nie wazne jakie zdanie - choć fakt sam zadko stosuję wyrażenia regularne nawet w php i wolę DOM...

odpal sobie to w konsoli lub dopisz otoczę js...

"... matki i żony Edypa.</p><H1>tresc<br> an\r\ntygony</h1><p>rozpoczyn<h2>a się w mo</H2>mencie ...".match(/<(h\d>)[\S\s]+?<\/\1/gi)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 14:51