[ Aleksandar1987 @ 05.09.2008. 22:04 ] @
Pozz

Treba mi php skriptica koja bi uzimala linkove sa jedne strane i stavljala ih u jedan niz.
Imam sledeci deo koda ali mi on ne daje zeljene rezultate jer meni treba samo link.

Code:
  protected function _get_links() {
    if (!empty($this->markup)){
      preg_match_all('/<a([^>]+)\>(.*?)\<\/a\>/i', $this->markup, $links);  
      return !empty($links[1]) ? $links[1] : FALSE;
    }
  }


Dobro, ostatak je nebitan...

Ovaj mi izbacuje od "<a" do "/a>" pa uhvati i npr "width="69" height="70" align="left"" sto mi ne treba, meni treba samo href.
Rekli su mi da skinem regexBuddy ali ja to ne znam da koristim :(

Konkretno, odavde

Code:
<a class=al4 href=view.php?id=64455 target=_blank>linAK:)</a>


treba da vrati: "www.nekisajt.com/view.php?id=64455" i ubaci u niz.

Pozz
Hvala
[ danci13 @ 05.09.2008. 22:13 ] @


A zašto ne:

Code:

preg_match_all( '|href="(.?*)"|', $html, $rez );


[Ovu poruku je menjao flylord dana 06.09.2008. u 02:18 GMT+1]
[ kiklop74 @ 18.09.2008. 02:21 ] @
A moze i ovako. Ne podnosim regularne izraze.

Funkcija podrazumeva da se u parametru $page nalazi sadrzaj cele html strane (ne link).

Code:


function GetPageLinks($page) {
$links= array();
$doc = new DOMDocument();
if ( $doc->loadHTML($page) ) {
  $xpath = new DOMXPath($doc);
   $hreflist = $xpath->query('//a/@href');
   if ($hreflist !== false) {
     foreach ($hreflist as $href) {
       $links[] = $href;
     }
   }
 }
  return links;
}


[ kazil @ 18.09.2008. 14:29 ] @
Ne znam da li ti je jos ovo uvek aktuelno, u svakom slucaju evo malo regexp-a za linkove ;)

Ono scim radis, source neke stranice, je u $string-u:

Code:

// Razne kombinacije...
// $matches_comb[0] sadrzi ceo <a> tag
// $matches_comb[1] sadrzi ono sto je unutar "href" atributa
// $matches_comb[2] sadrzi ono sto je izmedju <a> i </a>
// sa "s" modifier-om ce da uvati i linkove koji imaju u sebi newline
// bez njega ce uvatiti samo linkove koji su u jednom redu
preg_match_all('|<a\s.*href=["\'](.*)["\'].*>(.*)</a>|isxU',$string,$matches_comb);

echo "<pre>";
print_r($matches_comb);
echo "</pre>";

// Uvati samo ono sto je unutar "href" atributa
preg_match_all('|<a\s.*href=["\'](.*)["\'].*>.*</a>|isxU',$string,$matches_href);

echo "<pre>";
print_r($matches_href);
echo "</pre>";

// Uvati samo ono sto je unutar "href" atributa, i samo onda ako pocinje sa http://, ukljucujuci i http://
// $mathces_href_http[0] sadrzi i nekog smeca, mislim da je zbog \n-ova, nema veze, 
// $mathces_href_http[1] sadrzi tacno ono sto nam treba
preg_match_all('|<a\s.*href=["\'](http://.*)["\'].*>.*</a>|isxU',$string,$matches_href_http);

echo "<pre>";
print_r($matches_href_http);
echo "</pre>";


Kad budem imao vremena odradicu jos neke kombinacije :)

Happy hacking!