2010-02-15 16 views
5

पर सभी लिंक कन्वर्ट करें मैं php में एक वेबसाइट क्रॉलर लिख रहा हूं और मेरे पास पहले से ही कोड है जो किसी साइट से सभी लिंक निकाल सकता है। एक समस्या: साइट पूर्ण और सापेक्ष यूआरएल के संयोजन का उपयोग करती है। उदाहरण (http hxxp के साथ बदल के रूप में मैं हाइपरलिंक पोस्ट नहीं कर सकते):php पूर्ण यूआरएल

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

मेरे पास लिंक पर कोई नियंत्रण नहीं है (यदि वे पूर्ण/रिश्तेदार हैं), लेकिन मुझे उनका पालन करने की आवश्यकता है। मुझे इन सभी लिंक को पूर्ण यूआरएल में बदलने की जरूरत है। मैं php में यह कैसे करूँ?

+2

आप एचटीएमएल पार्स करने और लिंक खोजने के लिए क्या उपयोग कर रहे हैं? आपकी लाइब्रेरी में पहले से ही संबंधित यूआरएल को हल करने का कोई तरीका हो सकता है। –

+0

मैं अपने स्वयं के एचटीएमएल लिंक निकालने का काम कर रहा हूं। मैं कर्ल और PHP कार्यों को छोड़कर किसी पुस्तकालय का उपयोग नहीं कर रहा हूं। –

उत्तर

5

यहाँ एक शुरुआत

// 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, '/'); 
} 

एक निरपेक्ष लंगर बनाने का एक और तरीका के रूप में http_build_url विधि में एक नज़र है।

+1

एक सापेक्ष $ सापेक्ष = '../hello/index.php' भी हो सकता है; – Francesco

संबंधित मुद्दे