Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyciaganie wszystkich linkow z okreslonego kontenera
Forum PHP.pl > Forum > PHP
CapaciousCore
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
l3l0
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);
CapaciousCore
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.