Código PHP:
class Uri
{
protected static $inicializada = false;
protected static $parametros = array();
protected static function inicializar()
{
if (!self::$inicializada)
{
$uri = explode('/', $_SERVER['PHP_SELF']);
$file = false;
$nombre = null;
foreach ($uri as $valor)
{
if (!$valor || ($valor && !$file))
{
if ($valor)
{
$file = true;
}
continue;
}
if ($nombre)
{
self::asignarParametro($nombre, $valor);
$nombre = null;
}
else
{
$nombre = $valor;
}
}
self::$inicializada = true;
}
}
protected static function asignarParametro($nombre, $valor)
{
self::$parametros[$nombre] = $valor;
}
public static function obtenerParametro($nombre)
{
self::inicializar();
if (isset(self::$parametros[$nombre]))
{
return self::$parametros[$nombre];
}
return null;
}
public static function obtenerTodosParametros()
{
self::inicializar();
return self::$parametros;
}
public static function obtenerEnlace($string)
{
$string = explode('&', $string);
$return = $_SERVER['SCRIPT_NAME'];
foreach ($string as $valor)
{
$pos = strpos($valor, '=');
if ($pos === false || $pos == 0 || strlen($valor) == $pos)
{
continue;
}
$return .= '/'.substr($valor, 0, $pos).'/'.substr($valor, $pos + 1);
}
return $return;
}
}
// enlace
echo '<a href="'.Uri::obtenerEnlace('seccion=4').'">Seccion</a>';
// seccion
echo Uri::obtenerParametro('seccion');