Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wyciaganie wszystkich linkow z okreslonego kontenera
CapaciousCore
post 6.02.2010, 14:28:25
Post #1





Grupa: Zarejestrowani
Postów: 30
Pomógł: 4
Dołączył: 28.09.2009
Skąd: Chełm

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


Samo wyciaganie zawartosci linkow to nie problem bo ktos na tym forum podal cos ala to:

  1. preg_match_all('/<a.*href="([^"]*)".*>.*</a>/iU',$a,$b);


Na innym forum dostalem propozycje:

  1. '#<div>(.*<a.*href="([^"]*)".*>.*</a>.*)*</div>#isU'


Jednak przy takim zalozeniu:

  1. <?php
  2. $subject = '<div><a href="x">wtf</a><a href="x">wtf</a></div>';
  3.  
  4. preg_match_all ('#<div>(.*<a.*href="([^"]*)".*>.*</a>.*)*</div>#isU', $subject, $matches);
  5.  
  6. var_dump($matches);
  7. ?>


  1. array(3) {
  2. [0]=>
  3. array(1) {
  4. [0]=>
  5. string(49) "<div><a href="x">wtf</a><a href="x">wtf</a></div>"
  6. }
  7. [1]=>
  8. array(1) {
  9. [0]=>
  10. string(19) "<a href="x">wtf</a>"
  11. }
  12. [2]=>
  13. array(1) {
  14. [0]=>
  15. string(1) "x"
  16. }
  17. }


Nie wiem, nie moge sobie z tym poradzic. Zawsze bylem cienki z wyrazen regularnych. Ja po prostu chce wyciagnac anchor ze wszystkich linkow w danych kontenerze nic wiecej.



Moglby ktos wskazac droge

Ten post edytował CapaciousCore 6.02.2010, 14:29:30


--------------------
WebKrytyk - zobacz jak marnują się Twoje pieniądze w internecie!
Go to the top of the page
+Quote Post
l3l0
post 6.02.2010, 17:23:55
Post #2





Grupa: Zarejestrowani
Postów: 94
Pomógł: 16
Dołączył: 24.07.2009
Skąd: Gdańsk

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


Nie musisz tego robić przez wyrażenia regularne, możesz użyć naprzykład SimpleXML-a.

  1. $simpleXml = simplexml_load_string('<div><a href="x">wtf</a><a href="x">wtf</a></div>');
  2. $links = array();
  3. foreach ($simpleXml->xpath('/div[1]/a') as $anchorElement)
  4. {
  5. $links[] = $anchorElement->asXML();
  6. }
  7. var_dump($links);


Jeśli koniecznie chcesz wyrażenia to może coś takiego:

  1. $subject = '<div><a href="x">wtf</a><a href="x">wtf</a></div>';
  2. preg_match_all ('#(<a.+>.*</a>)#isU', $subject, $matches);
  3.  
  4. var_dump($matches);


Ten post edytował l3l0 6.02.2010, 17:24:16
Go to the top of the page
+Quote Post
CapaciousCore
post 6.02.2010, 18:16:18
Post #3





Grupa: Zarejestrowani
Postów: 30
Pomógł: 4
Dołączył: 28.09.2009
Skąd: Chełm

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


l3l0 wlasnie nie chce operowac przez funkcje DOM/XML.


Tylko nieuwzgledniles jednej rzeczy. Na stronie jest mnostwo linkow, a mnie interesuja tylko te wewnatrz okreslonego kontenera.

Nadal jestem ciekawe rozwiazania (jak wyglada wyrazenie regularne pod to). Rozwiazalem to w ten sposob ze identyfikuje pod href'ie. Gdyby nie uzyty specifyczny ciag to bym nadal musial cisnac na 2 regexach bo nie moge dojsc do tego jak wyciagnac all linki z danego kontenera.


--------------------
WebKrytyk - zobacz jak marnują się Twoje pieniądze w internecie!
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: 27.06.2025 - 10:09