10.04
Ciekawe jak dużo osób ma podobny problem jak ja. Brak odpowiednich wbudowanych w PHP funkcji do obsługi adresów URL. Dodawanie każdego parametru ręcznie zastanawiając się czy wcześniej nie został rozpoczęty „query string” itp. jest dosyć czasochłonne na dłuższą metę. Postanowiłem coś na ten przykry fakt zaradzić i napisałem 4, bardzo przydatne do obsługi adresów URL, funkcje.
Funkcja explodeURL „rozbija” podany adres URL na adres dokumentu oraz tablicę parametrów zawartych w „query string”.
/*
@author: Raisen
@site: http://www.raisen.pl/
@e-mail: kontakt[at]raisen[dot-here]pl
*/
if(strpos($url,'?')===false)
return array('url'=>$url);
$exp1=explode('?',$url);
if(count($exp1)>2)
return false;
if(strlen($exp1[1])==0)
return array('url'=>$exp1[0]);
$exp2=explode('&',$exp1[1]);
foreach($exp2 as $v){
$t=explode('=',$v);
if(strlen($t[0])>0)
if(strlen($t[0])>2 && substr($t[0],-2)=='[]')
$params[substr($t[0],0,-2)][]=$t[1];
else
$params[$t[0]]=$t[1];
}
return array('url'=>$exp1[0],'params'=>$params);
}
// Zwraca tablice w postaci:
// Array (
// "url" => ":adres_pliku_php:",
// "params" => Array (
// ":klucz:" => ":wartość:"
// )
// )
// Parametry przekazywane do funkcji
// $url - poprawny adres url
// UWAGA: zwraca false gdy nie potrafi przetworzyc adresu URL
Funkcja implodeURL składa do kupy adres URL przekazany jako tablica w postaci zwracanej przez funkcję explodeURL.
/*
@author: Raisen
@site: http://www.raisen.pl/
@e-mail: kontakt[at]raisen[dot-here]pl
*/
if(!isset($t['url']))
return false;
if(empty($t['params']))
return $t['url'];
//echo count($t['params']);
reset($t['params']);
while(list($k,$v)=each($t['params']))
if(is_array($v)){
$temp=array();
while(list(,$v2)=each($v))
//foreach($v as $key=>$val)
$temp[]=$k.'[]='.$v2;
$p[]=implode('&',$temp);
}
else {
$p[]=$k.'='.$v;
}
return $t['url'].'?'.implode('&',$p);
}
// sklada URL z tableli w postaci zwracanej przez funkcje explode URL
// UWAGA: zwraca false gdy nie potrafi przetworzyc tablicy
Funkcja addUrlGet dodaje parametr „query string” do adresu URL.
/*
@author: Raisen
@site: http://www.raisen.pl/
@e-mail: kontakt[at]raisen[dot-here]pl
@requires: explodeURL(), implodeURL()
*/
$t=explodeURL($url);
$t['params'][$get_name]=$get_value;
return implodeURL($t);
}
Funkcja delUrlGet usuwa z „query string” adresu URL wybrany parametr.