Sjekke link med php

kongen

kongemedlem
Er det mulig å sjekke om en link eksisterer med php?

Hvis jeg vil søke gjennom og finne alle linkene på siden min som går til vg.no/aktuelt.html, hvordan måtte php-koden sett ut?
 

adeneo

Medlem
PHP:
$url = 'http://vg.no/aktuelt.html';

$curl = curl_init($url);
curl_setopt($curl,  CURLOPT_RETURNTRANSFER, TRUE);
$response = curl_exec($curl);
$code = curl_getinfo($curl, CURLINFO_HTTP_CODE);

if($code == 404) {
    // lenken eksisterer ikke
}

curl_close($curl);
 

spikre

peterhamre.no
PHP:
$url = 'http://vg.no/aktuelt.html';

$curl = curl_init($url);
curl_setopt($curl,  CURLOPT_RETURNTRANSFER, TRUE);
$response = curl_exec($curl);
$code = curl_getinfo($curl, CURLINFO_HTTP_CODE);

if($code == 404) {
    // lenken eksisterer ikke
}

curl_close($curl);

Det kan da umulig være dette han spør om? Denne snutten sjekker ikke om LENKEN eksisterer, men om FILEN eksisterer.
 

adeneo

Medlem
Ehm, nei, du har nok rett. Det er meg som ikke kan lese.

Jeg antok at man ønsket å sjekke om lenken var gyldig, da høres noe unormalt ut å bruke PHP til å finne alle lenker til et gitt domene på sine egne nettsider ?
 
Sist redigert:

kongen

kongemedlem
Jeg mener at en link med <a href> faktisk eksisterer og at den ikke inneholder "nofollow". Javascript.open skal ikke gi gyldig link.

F.eks. hvis jeg har $url = 'vg.no/aktuelt.html' så vil jeg finne ut om det eksisterer en gyldig link fra en spesifikk side $url2 = 'minside.no/topp.html' eventuelt fra hele nettstedet $site = 'minside.no' til $url = 'vg.no/aktuelt.html'.

Trenger ikke å telle antall linker eller vise hvilket radnummer linken er på, kun om det eksisterer en gyldig link eller ikke.
 

adeneo

Medlem
Og hvordan finner du den siden, og eventuelt parser den siden slik den ville fremstått i nettleseren din med PHP.
 

kongen

kongemedlem
$url / $url2 / $site legges manuelt inn i koden eller legges inn i koden via skjemafelt.

Koden skal bare sjekke: gyldig link eksisterer / gyldig link eksisterer ikke, mellom 2 oppgitte urler.
 

adeneo

Medlem
Du trenger et nytt tastatur som ordner slikt automatisk

http://www.amazon.de/Blondinen-Tast...=2025&creative=165953&creativeASIN=B005CI42VS

61CKJxP9kPL._SL1400_.jpg
 

kongen

kongemedlem
Haha, tok du bilde av tastaturet ditt nå :eek:

Det er ikke jeg som skal legge inn linkene, men koden skal sjekke om det eksisterer linker. Ikke bare fra min side. Koden skal også kunne sjekke; er det en lenke fra vg.no/aktuelt.html til dagbladet.no/uaktuelt.html (ja/nei). Er det en lenke fra en hvilken-som-helst-side fra vg.no til dagbladet.no/uaktuelt.html (ja/nei).
 

adeneo

Medlem
Er ikke helt sikkert på om jeg skjønner dette, men du kan fortsatt bruke cURL til å hente en nettside, og så bruke en parser til å finne anchor elementer som matcher visse kriterier

PHP:
$url = 'http://www.nettside.no'; 

$curl = curl_init($url); 
curl_setopt($curl,  CURLOPT_RETURNTRANSFER, TRUE); 
$response = curl_exec($curl);
curl_close($curl);

$dom = new DOMDocument;
$dom->loadHTML($response);

foreach ($dom->getElementsByTagName('a') as $node) {
    $url = $node->getAttribute('href');

    if ( $url === 'vg.no/aktuelt.html ' ) { // eller regex matching osv ?
        // Tada
    }
}
 

kongen

kongemedlem
Prøver denne koden nå, men den gir ikke "link eksisterer", selv om det går linker frem og tilbake mellom begge urlene.

PHP:
$url = 'http://www.vg.no/forbruker/mat-og-drikke/mat/'; 

$curl = curl_init($url); 
curl_setopt($curl,  CURLOPT_RETURNTRANSFER, TRUE); 
$response = curl_exec($curl);
curl_close($curl);

$dom = new DOMDocument;
$dom->loadHTML($response);

foreach ($dom->getElementsByTagName('a') as $node) {
    $url2 = $node->getAttribute('href');

    if ( $url2 === 'http://www.vg.no/nyheter/innenriks/mat/norskproduserte-baer-er-ikke-norske/a/10122630/' ) { 
        echo "link eksisterer";
    } else {
	echo "link eksisterer ikke";
} 
}
 

fabbz

Medlem
Koden din virker til en viss grad. I eksemplet du viser til så blir akkurat den linken som du ønsker å sjekke etter lagt inn via JSON.

Du skjønner hva jeg mener om du åpner kildekoden til Mat - VG og søker etter norskproduserte-baer-er-ikke-norske.

Med curl henter du bare kildekoden, men javascript blir ikke parset og dermed vises ikke linken på samme måte som i nettleseren din.
 

kongen

kongemedlem
Jeg får ikke koden til å virke med vanlige linker heller. Jeg får hverken "link eksisterer" eller "link eksisterer ikke". Bare en blank side.
 
Topp