<?php
/*
In questo sito sono contenute le funzioni di analisi di un url
prepara_url($url)
Questa funzione serve per frazionare l'url nelle sue varie parti
aggiusta_link($link,$url)
Questa funzione trasforma il link da qualunque forma (relativo,assoluto) a http://www.pippo.com/ciccio/pluto.php
remove_file_from_url($url)
Questa funzione trova l'url assoluto e relativo di una risorsa ad esempio da http://www.pippo.com/plutp/index.html estrae http://www.pippo.com/plutp/ (relativo) e http://www.pippo.com/ (assoluto)
aggiusta_link_puntopunto($link,$url_assoluto,$path)
Questa funzione trova l'url dato un link del tipo ../../eccecc
*/
function prepara_url($url) {
/*
Questa funzione serve per frazionare l'url nelle sue varie parti
*/
//se non c'รจ il :// metto http://
if (!strrpos($url, "://")) {
$url="http://".$url;
}
$urlparts = parse_url($url);
if (!isset($urlparts['path'])) {
$urlparts['path']="/";
}
if (!isset($urlparts['host'])) {
$urlparts['host']="";
}
if (!isset($urlparts['query'])) {
$urlparts['query']="";
}
if (!isset($urlparts['scheme'])) {
$urlparts['scheme'] = "http";
}
if ($urlparts['query'] != "")
$urlparts['path'] .= "?".$urlparts['query'];
if (!isset ($urlparts['port'])) {
if ($urlparts['scheme'] == "http") {
$urlparts['port'] = 80;
} elseif ($urlparts['scheme'] == "https") {
$urlparts['port'] = 443;
}
}
if ($urlparts['port'] == 80) {
$urlparts['portq'] = "";
} else {
$urlparts['portq'] = ":".$urlparts['port'];
}
return $urlparts;
}
function aggiusta_link($link,$url) {
/*
Questa funzione trasforma il link da qualunque forma (relativo,assoluto) a http://www.pippo.com/ciccio/pluto.php
*/
$a_url = remove_file_from_url($url);
if (substr($link, 0, 1) == '/') {
$link = $a_url['assoluto'].substr($link, 1);
} elseif (substr($link, 0, 2) == './') {
$link = $a_url['relativo'].substr($link, 2);
} elseif (substr($link, 0, 3) == '../') {
$link = aggiusta_link_puntopunto($link,$a_url['assoluto'],$a_url['path']);
} elseif (!stristr($link, '://')) {
$link = $a_url['relativo'].$link;
}
return $link;
}
function remove_file_from_url($url) {
/*
Questa funzione trova l'url assoluto e relativo di una risorsa ad esempio da http://www.pippo.com/plutp/index.html estrae http://www.pippo.com/plutp/ (relativo) e http://www.pippo.com/ (assoluto)
*/
if (!stristr($url, '://')) {
$url="http://".$url;
}
$url_parts = parse_url($url);
if (!isset($url_parts['path'])) {
$url_parts['path']="/";
}
if (!isset($url_parts['host'])) {
$url_parts['host']="";
}
if (!isset($url_parts['scheme'])) {
$url_parts['scheme']="http";
}
$path = $url_parts['path'];
$regs = Array ();
if (eregi('([^/]+)$', $path, $regs)) {
$file = $regs[1];
$check = $file.'$';
$path = eregi_replace($check, "", $path);
}
$aurl["relativo"] = $url_parts['scheme']."://".$url_parts['host'].$path;
$aurl["assoluto"] = $url_parts['scheme']."://".$url_parts['host']."/";
$aurl["path"] = substr($path,1,-1);
$aurl["host"] = $url_parts['host'];
return $aurl;
}
function aggiusta_link_puntopunto($link,$url_assoluto,$path) {
/*
Questa funzione trova l'url dato un link del tipo ../../eccecc
*/
//Conto di quanto devo risalire
$n=substr_count($link,"../");
$a_path=explode("/",$path);
for($i=0; $i < $n; $i++) {
array_pop($a_path);
}
return $url_assoluto.implode("/", $a_path)."/".substr($link,$n*3);
}
?>