2010-02-15 14 views
5

Ben php bir web sitesi paletli yazıyorum ve zaten bir sitedeki tüm bağlantıları ayıklayabilirsiniz kod var. Sorun: siteler mutlak ve göreli URL'ler bir arada kullanıyor. (I köprüler yayınlamak olamaz hxxp ile ikame http) Örnekler:php mutlak URL'lere tüm bağlantıları çevirme

hxxp: site.com //site.com/

site.com/index.php

hxxp: //site.com/hello/index.php

/hello/index.php

hxxp: //site2.com/index.php

site2.com/index.php

Bağlantılar üzerinde hiçbir denetimim yok (mutlak/göreli ise), ancak bunları izlemem gerekiyor. Bütün bu bağlantıları mutlak URL'lere dönüştürmem gerekiyor. Bunu php'de nasıl yaparım?

+2

Html'yi ayrıştırıp bağlantıları bulmak için neler kullanıyorsunuz? Kitaplığınızda göreli URL'leri çözmenin bir yolu olabilir. –

+0

Kendi html bağlantı ayıklama işlevimi kullanıyorum. Curl ve php işlevleri dışında herhangi bir kütüphane kullanmıyorum. –

cevap

5

İşte

// Your crawler was sent to this page. 
$url = 'http://example.com/page'; 

// Example of a relative link of the page above. 
$relative = '/hello/index.php'; 

// Parse the URL the crawler was sent to. 
$url = parse_url($url); 

if(FALSE === filter_var($relative, FILTER_VALIDATE_URL)) 
{ 
    // If the link isn't a valid URL then assume it's relative and 
    // construct an absolute URL. 
    print $url['scheme'].'://'.$url['host'].'/'.ltrim($relative, '/'); 
} 

mutlak çapa yaratma başka bir yolu olarak http_build_url yöntem haline bakın bir başlangıç.

+1

bir akraba da $ relatif = '../hello/index.php' olabilir; – Francesco