मैंने देखा upvoted जवाब ऊपर रेगुलर एक्सप्रेशन से है, जो खतरनाक जब यूआरएल के साथ काम किया जा सकता है का उपयोग करता है।
/home.php?example
प्रकार,
ही-निर्देशिका nextpage.php
प्रकार,
../...../.../parentdir
प्रकार,
पूर्ण http://example.net
यूआरएल,
और आशुलिपि //example.net
यूआरएल
//Current base URL (you can dynamically retrieve from $_SERVER)
$pgurl = 'http://example.com/scripts/php/absurl.php';
function absurl($url) {
global $pgurl;
if(strpos($url,'://')) return $url; //already absolute
if(substr($url,0,2)=='//') return 'http:'.$url; //shorthand scheme
if($url[0]=='/') return parse_url($pgurl,PHP_URL_SCHEME).'://'.parse_url($pgurl,PHP_URL_HOST).$url; //just add domain
if(strpos($pgurl,'/',9)===false) $pgurl .= '/'; //add slash to domain if needed
return substr($pgurl,0,strrpos($pgurl,'/')+1).$url; //for relative links, gets current directory and appends new filename
}
function nodots($path) { //Resolve dot dot slashes, no regex!
$arr1 = explode('/',$path);
$arr2 = array();
foreach($arr1 as $seg) {
switch($seg) {
case '.':
break;
case '..':
array_pop($arr2);
break;
case '...':
array_pop($arr2); array_pop($arr2);
break;
case '....':
array_pop($arr2); array_pop($arr2); array_pop($arr2);
break;
case '.....':
array_pop($arr2); array_pop($arr2); array_pop($arr2); array_pop($arr2);
break;
default:
$arr2[] = $seg;
}
}
return implode('/',$arr2);
}
प्रयोग उदाहरण:
echo nodots(absurl('../index.html'));
nodots()
के बाद URL संपूर्ण में बदल जाती है बुलाया जाना चाहिए।
डॉट्स फ़ंक्शन अनावश्यक प्रकार का है, लेकिन पठनीय, तेज़, रेगेक्स का उपयोग नहीं करता है, और 99% सामान्य यूआरएल को हल करेगा (यदि आप 100% सुनिश्चित करना चाहते हैं, तो बस 6 का समर्थन करने के लिए स्विच ब्लॉक का विस्तार करें + डॉट्स, हालांकि मैंने कभी भी यूआरएल में कई बिंदु नहीं देखा है)।
आशा इस मदद करता है,
यहाँ [एक तुलना] (http://scraperblog.blogspot.com/2012/12/convert- सापेक्ष-urls-to-absolute-in.html) कुछ समाधानों में से एक का उल्लेख किया गया है और इनमें से एक है। – pguardiario
इस कोड ने मेरे लिए चाल बनाई: http://sourceforge.net/projects/absoluteurl/ –
गणराज्य: http://stackoverflow.com/questions/4444475/transfrom-relative-path-into-absolute-url-using -php http://stackoverflow.com/questions/11653677/php-relative-urls-to-absolute-urls-conversion-with-eventually-base-href-html-tag http://stackoverflow.com/questions/19618754/परिवर्तित-रिश्तेदार-यूआरएल करने वाली पूर्ण-यूआरएल http://stackoverflow.com/questions/26423904/converting-relative-url-to-absolute – qdinar